簡體   English   中英

更新數組中 object 的 state - React

[英]Update state of an object within the array - React

我有一個 state 並且在 state 中有一個包含多個對象的列表。 我基本上想做的是從這個數組中獲取一個索引,在本例中為[0] ,並更改它的 state。 所以,簡而言之,我想采用{id: "1", value: "world1"} ,並將 id 更改為'something' 我做了一個代碼,但它沒有像我預期的那樣出來。

this.state = {
   myState: [
              { id: "1", value:"world1" },
              { id: "2", value:"world2" },
              { id: "3", value:"world3" },
            ]
   }

const result = this.setState(prevState => ({
      myState: {
        ...prevState[0].id,
        id: 'something'
      }
    }))

控制台日志(結果)

不知道你為什么需要這個,但我在這里看到的問題是 myState 最初是一個數組,然后你將它作為 object 傳遞回來。

嘗試這個:

const result = this.setState(prevState => {
  prevState.myState[0].id = 'something';
  return prevState;
})

 const state = { myState: [{ id: "1", value: "world1" }, { id: "2", value: "world2" }, { id: "3", value: "world3" }, ] } const setState = (({ myState }) => { const newState = { myState: [...myState] } const array = newState.myState const targetIndex = array.findIndex(({ id }) => id === '1') const item = array[targetIndex] array[targetIndex] = {...item, id: 'something' } return newState; }) console.log(setState(state))

使用 Array.prototype.map 和 object 擴展運算符

this.setState(prevState => {
    return {
        myState: prevState.myState.map(
            myStateItem => {
                if(myStateItem.id === '1') {
                    return {
                        ...myStateItem,
                        id: 'something'
                    }
                }
                return {
                    ...myStateItem
                }
        })
    };
});

暫無
暫無

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

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