因此,当对象数组仅是使用贴图和扩散函数的对象数组时,我对更新对象数组有一定的信心.然而,我所坚持的是更新对象数组中的array.

下面是一个例子.

我有一个单独的状态来 Select 哪个索引

const [option, setOption] = useState(0);

我使用对象数组初始化状态

    const [parts, setParts] = useState([
        {bodyPart: "upperLip", price: 1000, active: [false, false, false]},
        {bodyPart: "chin", price: 1000, active: [false, false, false]},
    ])

基本上,我希望在BodyPart的描述匹配时更新嵌套在对象数组中的array.

    const handleOnClick = (bodyPart) => {            
        
        parts.map((part) => {
            if (part.bodyPart === bodyPart){
                return {...part, active[option]=true}
            } else {
                //do nothing
            }
        })
    }

我知道RETURN{...PART,ACTIVE[OPTION]=TRUE}部分错误.在该州内更新这篇文章的正确方式是什么?

我已经试着像对待数组一样将其设置为真,但我不再太确定了.

推荐答案

可以使用扩散运算符和Array.prototype.map()来更新嵌套数组:

const handleOnClick = (bodyPart) => {
    setParts(
        parts.map((part) => {
            if (part.bodyPart === bodyPart){
                return {
                    ...part, 
                    active: [
                        ...part.active.slice(0, option), 
                        true,
                        ...part.active.slice(option + 1)
                    ]
                }
            } else {
                return part;
            }
        })
    )
}

Javascript相关问答推荐

如何在使用fast-xml-parser构建ML时包括属性值?

单击更新页面的按钮后,页面刷新;测试/断言超时,有两个标题,但没有一个标题

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

为什么我的includes声明需要整个字符串?

在观察框架中搜索CSV数据

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

使用ThreeJ渲染的形状具有抖动/模糊的边缘

闭包是将值复制到内存的另一个位置吗?

让chart.js饼图中的一个切片变厚?

在D3条形图中对具有相同X值的多条记录进行分组

react -原生向量-图标笔划宽度

将延迟加载的模块转换为Eager 加载的模块

Chrome上的印度时区名S有问题吗?

在范围数组中查找公共(包含)范围

无法在Adyen自定义卡安全字段创建中使用自定义占位符

使用VITE开发服务器处理错误

在执行console.log(new X())时记录一个字符串

递归地将JSON对象的内容上移一级

如何按区域进行过滤并将其从结果数组中删除?

错误400:当我试图在React中使用put方法时,该字段是必需的