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
我不是在建議它作爲解決問題的辦法 - 只是最佳實踐。 –