FlatList不会重新渲染,直到列表滚动

时间:2017-06-07 17:34:11

标签: javascript reactjs react-native react-native-flatlist

我有一个FlatList,它由在视图状态中定义的数组提供。通过过滤原始数组并使用新过滤的数组将数组设置为状态来过滤列表。但只有在滚动列表时才会调用重新渲染。有没有办法强制重新制作平面清单?

import setsArr from '../../json/sets';
.
.
.
constructor (props) {
  super(props);
  this.state({
    arrToDisplay: setsArr,
  });
}
.
.
.
_filter = (filter,value) => {
  var newArr = setsArr.filter(function(){
                 return (el.filter === value)
               });
  this.setState({
    arrToDisplay: newArr, 
  });
}

renderOption = (data) => {
  return (
    <Text>{data.item.name}</Text>
  );
}
render () {
   return (
      .
      .
      .
      <FlatList
        data={this.state.arrToDisplay}
        renderItem={(item) => this.renderOption(item)}}/>
      .
      .
   );
}

1 个答案:

答案 0 :(得分:0)

我发现ListView,FlatList和SectionList只有在FlatList有唯一键时才会更改为数据源。

如果有人发布了正确答案,我会很高兴,但这就是我现在正在做的事情:

<FlatList
  key={"mylist" + hashOfDataSourceObj}
  ...

请参阅https://stackoverflow.com/a/31481960/7223