我将组列表映射到一个对象中,其中组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。列表继续显示旧对象。
答案 0 :(得分:0)
尝试像这样更改_deleteGroup函数:
Aspect Fill
当组件的状态或道具更改时,组件将重新渲染。如果您的render()方法依赖于其他数据,则可以通过调用forceUpdate()来告诉React该组件需要重新渲染。