首頁 > web前端 > js教程 > 如何使用「setState」更新狀態中的巢狀物件?

如何使用「setState」更新狀態中的巢狀物件?

Mary-Kate Olsen
發布: 2024-11-04 03:34:30
原創
324 人瀏覽過

How to Update a Nested Object in State Using `setState`?

使用setState 更新state.item[1]

在這種情況下,您正在嘗試更新物件中的物件使用setState 在在您的狀態中。若要正確更新狀態,您需要複製整個狀態對象,修改副本,然後將狀態設定為更新後的副本。

以下是如何使用以下方法更新state.item[1] setState:

<code class="javascript">// 1. Make a shallow copy of the items
let items = [...this.state.items];

// 2. Make a shallow copy of the item you want to mutate
let item = {...items[1]};

// 3. Replace the property you're interested in
item.name = 'newName';

// 4. Put it back into our array. N.B. we *are* mutating the array here, 
//    but that's why we made a copy first
items[1] = item;

// 5. Set the state to our new copy
this.setState({items});</code>
登入後複製

如果需要,您可以合併步驟2 和3:

<code class="javascript">let item = {
    ...items[1],
    name: 'newName'
}</code>
登入後複製

或者您可以在一行中完成整個操作:

<code class="javascript">this.setState(({items}) => ({
    items: [
        ...items.slice(0,1),
        {
            ...items[1],
            name: 'newName',
        },
        ...items.slice(2)
    ]
}));</code>
登入後複製

注意:在這些範例中,我們假設items 是一個陣列。如果 items 是對象,您將對對象屬性進行類似的更新。

請記住,在使用 setState 時,您應該始終在修改之前複製先前的狀態,以確保不會意外發生變更原始狀態物件。

以上是如何使用「setState」更新狀態中的巢狀物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板