[英]How to update array element using setState in React?
如果我有一個類似於這樣的數組結構:
person[{id: 0, firstname: 'john', surname: 'smith'},
{id: 1, firstname: 'jane', surname: 'smith'}]
然后使用事件處理程序來捕獲一些更改並使用 setState,我如何更新與此類似的數組元素:
handleChangeEvent(newSurname, id){
this.setState({ person[id].surname : newSurname})
}
使用setState()
的更新程序回調在單個原子操作中執行狀態更改,而不會在同一事件滴答中覆蓋(或被覆蓋)組件的其他狀態更改:
handleChangeEvent(surname, id) {
this.setState(({ people }) => ({
people: people.map(
person => person.id === id ? { ...person, surname } : person
)
}));
}
也許您可以嘗試以下方法:
handleChangeEvent(newSurname, id){
this.setState(prevState => ({
people: prevState.people.map(
person => person.id === id ? { ...person, surname: newSurname } : person
)
}));
}
在此代碼片段中,我們將獲得對組件狀態下的people
數組的引用。 然后我們根據ids
過濾這個數組,如果id
匹配需要更新姓名的人,我們會適當地設置surname
。 否則,如果id
與需要更新的人不匹配,我們只返回現有對象。
希望這有幫助!
這基本上就是你要找的。 但是,我建議您使用像 immer 這樣的庫來創建不可變對象。
handleChangeEvent(newSurname, id){
this.setState({
people : Array.from(this.state.people, person => {
if(person[id] === id)
return {...person, surname: newSurname}
return person
})
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.