![](/img/trans.png)
[英]ReactJs TypeError: Cannot assign to read only property 'name' of object '#<Object>'
[英]ReactJs - TypeError: Cannot assign to read only property 'name' of object '#<Object>'
我有一個對象數組:
var subcategories = [{name:'gloves', tag:'wool'}, {name:'boots', tag: 'leather'}]
我只想找到 object 的索引來更改名稱或標簽。 我用這個 function:
function setSubcat(val, index, lang){
var newArr = []
var obj = {
'name': val
}
subcategories.map((val, i)=>{
if(index === i){
var newObj = Object.assign(val, obj)
newArr.push(newObj)
}
newArr.push(val)
})
setSubcategories(newArr)
}
錯誤發生在var newObj = Object.assign(val, obj)
我認為這個錯誤意味着我不能直接改變 state,所以我必須復制一份。 我認為通過subcategories
映射並將其推送到本地newArr
意味着我制作了數組的副本。 但是當我想在其中更改 object 的值時它不起作用,所以我使用了 Object.assign,我認為它會從數組中深度復制特定的 object,但它也不起作用。
我在這里錯過了什么?
正如評論中指出的那樣:
map
functioninterface TaggedItem {
name: string,
tag: string
}
var subcategories = [{name:'gloves', tag:'wool'}, {name:'boots', tag: 'leather'}];
function setSubcat(val: string, index: number, _lang: any){
var obj: Partial<TaggedItem> = {
'name': val
}
var newArr: TaggedItem[] = subcategories.map((val, i)=>{
if(index === i){
return {
...val,
...obj
}
} else {
return {...val};
// or return val; if you don't need a full copy
}
})
console.log(newArr);
}
setSubcat('newName', 0, undefined);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.