[英]Automatic State mutation in ReactJS - Issue
我在React中使用State,並且在一個nameChangeHandler
的輸入組件上放置了onChange
偵聽nameChangeHandler
,並且nameChangeHandler
了一個奇怪的突變問題。
這是我的狀態對象:
state = {
persons: [
{ id: '363724', name: 'Person1', age: 28, job: 'React Developer' },
{ id: '724324', name: 'Person2', age: 49, job: 'General Manager' },
{ id: '753424', name: 'Person3', age: 25, job: 'ITSM Consultant' }
]
};
然后下面的代碼this.state.person
使用一個額外的字符(我輸入)記錄更新后的狀態,即使我沒有在任何地方使用setState,也沒有直接改變狀態。
nameChangeHandler = (event, id) => {
const personIndex = this.state.persons.findIndex(p => p.id === id);
const newPersons = [...this.state.persons];
newPersons[personIndex].name = event.target.value;
console.log(newPersons);
console.log(this.state.persons);
//this.setState({});
};
這是開發人員控制台的屏幕截圖。
有人可以幫忙嗎?
Es6擴展語法不會進行淺表復制而不是深表復制。因此,當您嘗試從現有對象創建新的嵌套對象時,必須使用深表復制方法。
對於嵌套對象的深度復制,可以使用JSON.parse(JSON.stringify(object))
在這里,您有一個對象數組,因此您可以執行以下操作:
let newPersons = this.state.persons.map(person => {return {...person}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.