[英]Create a new array of objects by property value from existing object add existing objects to new array
[英]Add new child objects to existing object in React
我正在嘗試通過 useState 更新一個子 object 和一個額外的 object。 我創建了一個示例以使這一點更清楚:
https://codesandbox.io/s/affectionate-wescoff-u01x0?file=/src/App.js
示例 object 如下所示:
{
"id": 123,
"books": {
"book": {}
}
}
當我推送更多數據時,我希望它看起來像這樣:
{
"id": 123,
"books": {
"book": {
"name": "Sirens of Titan",
"author": "Kurt Vonnegut"
},
"book": {
"name": "The Hobbit",
"author": "J.R.R. Tolkein"
}
}
}
在這個階段,我把它搞砸了,它看起來像:
{
"id":123,
"books":[
{
"0":{
"book":{
},
"sampleData1":{
"book":{
"name":"Sirens of Titan",
"author":"Kurt Vonnegut"
}
}
},
"sampleData2":{
"book":{
"name":"The Hobbit",
"author":"J.R.R. Tolkein"
}
}
}
]
}
這是我設置損壞的 object 的方式:
const [main, setMain] = useState(library);
function addNestedObj() {
setMain({ ...main, books: [{ ...main.books, sampleData1 }] });
}
只需將解構更進一步:
setMain({...main, kids: [...main.kids, secondObj]})
您的library
object 的books
屬性是 object,而不是數組。 這可能是必要的,但我猜這不是因為您的 book 對象已經具有name
屬性,因此它們不需要單獨的鍵。
通過該更改,您可以修改setMain
function 以將 sampleData 的book
屬性添加到sampleData
的books
屬性:
setMain({ ...main, books: [...main.books, sampleData1.book] });
我在您的 CodeSandbox 的一個分支中添加了這些更改: https://codesandbox.io/s/modest-fog-byegh?file=/src/App.js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.