我遇到的基本问题是我使用AJAX请求更新数据然后设置数据状态,但在视图中,即使我的状态已更新,数据也不会更新。我已经发现它是因为键是相同的(应该是因为我只是使用ID mongoose提供的)。
如果我执行的操作如将状态设置为空,然后设置然后设置新数据然后更新。或者,如果我将密钥设置为随机生成的密钥,它也可以正常工作,但这两者都感觉不对。我想知道在使用map函数时重新渲染更新对象的正确方法是什么。
它看起来像这样:
Object.keys(this.state.data).map((i) => (
<MyComponent key={ this.state.data[i]._id }
))
然后我有this.setState({ data: response.data })
的基本AJAX请求。
如何正确更新视图中更新项目的数据?
答案 0 :(得分:0)
您可以将索引添加为_id
的前缀吗?
key={ `${i}_${this.state.data[i]._id}`}
答案 1 :(得分:0)
我不确定它是否与密钥相关,如果你在代码之前的console.log(this.state.data)它应该更新它的时候呢?在我看来,道具没有传递给组件。
我的意思是我经常在列表中的键中使用map的索引,我从来没有遇到任何问题。