簡體   English   中英

更新嵌套的setState對象 - ReactJS

[英]Update nested setState Object - ReactJS

this.state = {
    qs: {catName:'',subCatName:''}
}

我有上面嵌套的狀態對象。 為了setState,我在componentDidUpdate中使用了以下代碼。

var newQs = {...this.state.qs}
newQs.catName = 'name';
this.setState({qs: newQs});

但它不起作用,仍然this.state.qs為空未更新。 我甚至試過以下一個。

this.setState({...this.state, qs: {
    ...this.state.qs,
    catName: 'name'
}});

仍然沒有用。

像這樣使用setState:

this.setState( prevState =>
    ( { qs: { ...prevState.qs, catName: 'name' } } )
)

你不需要這里...this.state因為React合並了你所在州的其他部分。

我也根據@ kuby的評論編輯了我的建議。 React現在建議使用帶有prevState的函數,而不是直接設置狀態。 這是因為狀態更新可能是異步的。 因此,使用函數是一種更好的方法。 如果我們不使用並不意味着總是存在問題的功能,但可能存在且安全方面始終是更好的方法。

相關文檔: https//reactjs.org/docs/state-and-lifecycle.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM