与ListView不同,我们可以更新this.state.datasource。是否有任何方法或示例更新FlatList或重新呈现它?
我的目标是在用户按下按钮时更新文本值。
renderEntries({ item, index }) { return( <TouchableHighlight onPress={()=> this.setState({value: this.state.data[index].value+1})> <Text>{this.state.data[index].value}</Text> </TouchableHighlight> ) } <FlatList ref={(ref) => { this.list = ref; }} keyExtractor={(item) => item.entry.entryId} data={this.state.data} renderItem={this.renderEntries.bind(this)} horizontal={false} />
使用extraDataFlatList组件上的属性。
extraData
如文档所述:
通过传递extraData={this.state}给FlatList我们,确保更改FlatList时将重新呈现自己state.selected。如果不设置此道具,FlatList就不会知道它需要重新渲染任何项目,因为它也是a PureComponent,并且道具比较不会显示任何更改。
extraData={this.state}
FlatList
state.selected
PureComponent