我有JSON
的{{1}}请求调用,如下所示:
fetch
我想将另一个[{
"nameSecond": "",
"Id": "",
"First": {
"nameFirst": "",
"Id": ""
}
},
{
"nameSecond": "",
"Id": "",
"First": {
"nameFirst": "",
"Id": ""
}
},
{
"nameSecond": "",
"Id": "",
"First": {
"nameFirst": "",
"Id": ""
}
},
{
"nameSecond": "",
"Id": "",
"First": {
"nameFirst": "",
"Id": ""
}
}
]
的对象替换为此JSON
的每个对象。
将要添加到第一个JSON
的第二个JSON
看起来像这样:
JSON
我所做的是,运行[{
"nameFirst": "",
"id": ""
},
{
"nameFirst": "",
"id": ""
},
{
"nameFirst": "",
"id": ""
},
{
"nameFirst": "",
"id": ""
}]
时,单击的对象将被第一个ChangeObjectFirst
的对象First
替换,并且将显示新数据。
JSON
我使用 <div onClick={((e) => this.ChangeObjectFirst(e, i))}>Change</div>
来替换对象,但是
主要的问题是,这将是第一次。第二次或更多次单击的对象将不会被对象Object.assign({}, itemToReplace)
取代,并且会有First
TypeError: el is undefined
答案 0 :(得分:1)
问题在于更新时,您还没有从地图返回新数据。另外,由于您使用库变量进行渲染,因此您需要在更新数据后调用reorganiseLibrary。更好的无变异实现如下所示
ChangeObjectFirst = (e, i) => {
const itemToReplace = this.state.libraryNew[i];
let { data } = this.state;
data = data.map((el, idx) => {
return Object.assign({}, el, { First: itemToReplace});
});
this.setState({ data: data }, ()=> {this.reorganiseLibrary()});
}