我有一个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} />}
/>}
答案 0 :(得分:22)
来自documentation,看起来你应该做这样的事情
key={(this.state.horizontal ? 'h' : 'v')}
答案 1 :(得分:1)
我认为这个信息很清楚。如果要更改列数以强制重新渲染,则需要为纵向/横向定义不同的键。尝试将numCols
值与keyExtractor
中的索引连接起来。
答案 2 :(得分:1)
将更改值传递给FlatList本身。它与keyExtractor或renderItem方法中的关键字attrbibute无关:
<FlatList key={changingValue} .. />
应该解决它。
答案 3 :(得分:1)
我使用键
numColumns = {this.state.columnCount}
key={this.state.columnCount}
答案 4 :(得分:0)
<FlatList
data={props.localFolders}
style={{ width: "100%" }}
numColumns={4}
key={4}
renderItem={({ item }) => <LocalFolder {...item} />}
keyExtractor={(item) => item.id.toString()}
/>
对我有用
答案 5 :(得分:0)
const [numCols, setColumnNo] = useState(0);
<FlatList
key={numCols}
numColumns={numCols}
...
/>