【发布时间】:2021-01-08 13:31:45
【问题描述】:
我有一个对象数组:
var subcategories = [{name:'gloves', tag:'wool'}, {name:'boots', tag: 'leather'}]
我要做的就是找到对象的索引来更改名称或标签。我使用这个功能:
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)
我认为这个错误意味着我不能直接改变状态,所以我必须制作一个副本。我认为通过subcategories 映射并将其推送到本地newArr 意味着我制作了数组的副本。但是当我想更改其中的对象值时它不起作用,所以我使用了 Object.assign ,我认为它会从数组中深度复制特定对象,但它也不起作用。
我在这里错过了什么?
【问题讨论】:
-
同意;您可以发布更多代码或游乐场示例吗?这段代码没问题。
-
请不要那样使用
map。每个人都会阅读该代码并认为“这是一个错误吗?我需要问他......”。map用于转换每个元素,forEach用于访问每个元素。 -
仍在使用
map正确使用:typescriptlang.org/play?#code/… -
@Lesiak 就是这样。非常感谢
标签: reactjs typescript react-state-management