由于密钥

时间:2017-09-26 20:21:10

标签: javascript node.js ajax reactjs

我遇到的基本问题是我使用AJAX请求更新数据然后设置数据状态,但在视图中,即使我的状态已更新,数据也不会更新。我已经发现它是因为键是相同的(应该是因为我只是使用ID mongoose提供的)。

如果我执行的操作如将状态设置为空,然后设置然后设置新数据然后更新。或者,如果我将密钥设置为随机生成的密钥,它也可以正常工作,但这两者都感觉不对。我想知道在使用map函数时重新渲染更新对象的正确方法是什么。

它看起来像这样:

Object.keys(this.state.data).map((i) => (
    <MyComponent key={ this.state.data[i]._id }
))

然后我有this.setState({ data: response.data })的基本AJAX请求。

如何正确更新视图中更新项目的数据?

2 个答案:

答案 0 :(得分:0)

您可以将索引添加为_id的前缀吗?

key={ `${i}_${this.state.data[i]._id}`}

答案 1 :(得分:0)

我不确定它是否与密钥相关,如果你在代码之前的console.log(this.state.data)它应该更新它的时候呢?在我看来,道具没有传递给组件。

我的意思是我经常在列表中的键中使用map的索引,我从来没有遇到任何问题。