javascript - react native Flatlist 网格和项目标题

标签 javascript react-native

我想自定义一个屏幕: enter image description here

所以我使用 FlaSTList 并检查项目是否是标题我将使用 item = window.with 设置,如果不是 width item = window.width/3。但它的错误。 这是我的代码:

const { width, height } = Dimensions.get("window")
class App extends React.Component {
    constructor() {
        super()
        this.state = {
            data: [
                { name: "Movies", header: true },
                { name: "Interstellar", header: false },
                { name: "Dark Knight", header: false },
                { name: "Pop", header: false },
                { name: "Music", header: true },
                { name: "Adams", header: false },
                { name: "Nirvana", header: false },
                { name: "Amrit Maan", header: false },
                { name: "Oye Hoye", header: false },
                { name: "Eminem", header: false },
                { name: "Places", header: true },
                { name: "Jordan", header: false },
                { name: "Punjab", header: false },
                { name: "Ludhiana", header: false },
                { name: "Jamshedpur", header: false },
                { name: "India", header: false },
                { name: "People", header: true },
                { name: "Jazzy", header: false },
                { name: "Appie", header: false },
                { name: "Baby", header: false },
                { name: "Sunil", header: false },
                { name: "Arrow", header: false },
                { name: "Things", header: true },
                { name: "table", header: false },
                { name: "chair", header: false },
                { name: "fan", header: false },
                { name: "cup", header: false },
                { name: "cube", header: false }
            ],
            stickyHeaderIndices: []
        };
    }
    renderItem(item) {
        if (item.header) {
            return (
                <View style={{ width: width, height: 40, backgroundColor: 'green' }}>
                    <Text>{item.name}</Text>
                </View>
            )
        } else {
            return (
                <View style={{
                    width: width / 3,
                    height: width / 3,
                    backgroundColor: 'white',
                    borderWidth: 1,
                    borderColor: 'gray'
                }}>
                    <Text>{item.name}</Text>
                </View>
            )
        }
    }
    render() {
        return (
            <View style={{ flex: 1, backgroundColor: 'red' }}>

                <FlatList
                    data={this.state.data}
                    renderItem={({ item }) => (
                        this.renderItem(item)
                    )}
                    keyExtractor={item => item.name}

                />
            </View>
        );
    }
}
export default App;

和我的结果 enter image description here 我有错误:一个项目不是标题是一行,但我想连续显示 3 个项目。

当使用代码在 flaSTList 中添加数字列 = 3 时:

 <FlatList
  numColumns={3}
  data={this.state.data}
  renderItem={({ item }) => (this.renderItem(item))}
  keyExtractor={item => item.name}
/>
我有结果 enter image description here

如何解决连续显示 3 个项目的问题? 非常感谢。

最佳答案

我想你忘了在 Flatlist Prop 中添加 numColumns = { 3 } Here您会得到问题的详细解决方案。

关于javascript - react native Flatlist 网格和项目标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642869/

相关文章:

Javascript 存储数据

javascript - D3 中 .remove() 的临时替代方案

javascript - react native /Redux : How to pass down updated state to child components every time state changes?

reactjs - React-Native应用程序错误未知选项: .名称(?)

react-native - React Native 中的进度对话框

android - 固定元素大小并在其上添加 ScrollView

xcode - 在 React Native iOS 应用程序中更改端口

javascript - 用于重新映射数字键盘的 jQuery 插件

javascript - 如何使用ajax php刷新div标签内的表格

javascript - 使用键盘移动div?