var DENEMEJSON = React.createClass({
getInitialState: function() { return {
arrayone:[{"id":"1","city":"New York"},{"id":"2","city":"Brooklyn"}],
arraytwo:[{"id":"101","city":"Hamburg"},{"id":"102","city":"Schalke"}]
}
},
buttonFunc(){
var str=this.state.arrayone;
str[0].city="Tokyo";
this.setState({arrayone:str});
this.setState({arraytwo:str});
},
buttonFunc2(){
var str=this.state.arrayone;
str[0].city="Pakistan";
console.log(JSON.stringify(this.state.arrayone));
console.log(JSON.stringify(this.state.arraytwo));
this.setState({arrayone:str});
},
render: function() {
return ( <div>
<button onClick={this.buttonFunc}/>
<button onClick={this.buttonFunc2}/>
{JSON.stringify(this.state.arrayone)}
{JSON.stringify(this.state.arraytwo)}</div>
)
}//end return
});
当我点击第一个按钮代码做我想做的。它将arrayone[0].city
和arraytwo[0].city
的价值设置为像这样的东京。React.js和更新JSON阵列状态
arrayone
:[{"id":"1","city":"Tokyo"},{"id":"2","city":"Brooklyn"}]
arraytwo
:[{"id":"1","city":"Tokyo"},{"id":"2","city":"Brooklyn"}]
当我点击第二个按钮,我只想arrayone[0].city
值设置为Pakistan
(不arraytwo
)。
但代码集arrayone[0].city
和arraytwo[0]
的值设置为Pakistan
。
为什么设置arraytwo[0].value
到Pakistan
?
我能做些什么来解决这个问题?
你不应该叫'setState'两次一种方法。在'buttonFunc'中结合两个'setState'调用就像这样:'this。setState({array:str,arraytwo:str})' –
我试过,但仍然是相同的结果。 – javauser35
我不是在建议它作为解决问题的办法 - 只是最佳实践。 –