2

我有一个 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)}}/>
      .
      .
   );
}
4

1 回答 1

0

我发现 ListView、FlatList 和 SectionList 仅在 FlatList 具有唯一键时才呈现对数据源的更改。

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

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

https://stackoverflow.com/a/31481960/7223

于 2017-06-08T01:21:25.450 回答