FlatList不重新渲染

时间:2020-02-29 20:28:09

标签: react-native

我将组列表映射到一个对象中,其中组ID是该对象的键

this.state.groups = {
'ABCD' : { ... },
'BCDE' : { ... }
}

我具有从状态中删除组的功能。我深深复制了整个对象。在设置新状态之前,我确保通过的新对象已删除组。是的。

_deleteGroup = (id) => {
          let p = {...this.state.groups};
          console.log(p[id]);
          delete p[id];
          console.log('Deleted');
          console.log(p[id]);
          this.setState({groups: p});
}

state.groups通过props传递给嵌套组件内的FlatList

    <FlatList
      data={Object.values(this.props.groups)}
      extraData={Object.values(this.props.groups)}
      renderItem={this._renderGroups}
      keyExtractor={(item, index) => index.toString()}
    />

无论我做什么,我都无法重新渲染FlatList。列表继续显示旧对象。

1 个答案:

答案 0 :(得分:0)

尝试像这样更改_deleteGroup函数:

Aspect Fill

当组件的状态或道具更改时,组件将重新渲染。如果您的render()方法依赖于其他数据,则可以通过调用forceUpdate()来告诉React该组件需要重新渲染。