动态更改React Native Flat List中的列数

Mat*_*ung 6 reactjs react-native react-native-flatlist

我有一个FlatList我想根据方向更改列数的地方.但是,当我这样做时,我会看到红色屏幕.根据红屏错误消息,我不太确定我应该如何更改关键道具.任何帮助表示赞赏.

      // dynamically changing number of columns
      const numCols = orientation === constants.PORTRAIT ? 3 : 8

      <FlatList
        keyExtractor={(_, i) => i}
        numColumns={numCols} // assigning the number of columns
        horizontal={false}
        renderItem={({ item }) => <ListItem imageUrl={item.url} />}
      />}
Run Code Online (Sandbox Code Playgroud)

红屏死机

小智 30

文档中,看起来你应该做这样的事情

key={(this.state.horizontal ? 'h' : 'v')}
Run Code Online (Sandbox Code Playgroud)

  • 关键属性对我有用,但是在重新渲染标题时会闪烁,因为它是静态的并且对于列表的两个实例都是相同的 (4认同)

kri*_*ish 26

我是用钥匙做的

    numColumns = {this.state.columnCount}
    key={this.state.columnCount}
Run Code Online (Sandbox Code Playgroud)


Aay*_*rya 9

钩子里

const [numCols, setColumnNo] = useState(0);

<FlatList
key={numCols}
numColumns={numCols}
...
/>
Run Code Online (Sandbox Code Playgroud)


Sup*_*rio 6

将不断变化的值传递给 FlatList 本身。它与 keyExtractor 或 renderItem 方法中的关键属性无关:

<FlatList key={changingValue} .. /> 
Run Code Online (Sandbox Code Playgroud)

应该解决它。