Reactjs 修改对象的useState数组

Reactjs 修改对象的useState数组,reactjs,use-state,arrayobject,Reactjs,Use State,Arrayobject,我有一个对象的useState数组,如下所示: const[processs,setprocesss]=useState([]) 从数据库中获取值后,它变为: [{processId: 0, status: "true"}, {processId: 1, status: "true"}] 现在,我想向其添加新属性,使其类似于: [{processId: 0, name:"process1",status: "true&quo

我有一个对象的useState数组,如下所示:

const[processs,setprocesss]=useState([])

从数据库中获取值后,它变为:

[{processId: 0, status: "true"},
{processId: 1, status: "true"}]
现在,我想向其添加新属性,使其类似于:

[{processId: 0, name:"process1",status: "true",active:"true"},
{processId: 1, name:"process2",status: "true",active:"true"}]
名称的来源:

var allProcNames=["process1","process2"]
我尝试了以下方法:

var objProc = JSON.parse(JSON.stringify(processes));

objProc.map((proc) => ({
        ...proc,
        name: procNames[proc.processId],
        active: true,
    }));
但是,它只记录相同的内容:

[{processId:0,状态:“true”}]


除了在db中为进程名称添加一个新列之外,还可以做什么呢?

您可以这样更改代码

    let temp = objProc.map((proc) => {
      return ({
        ...proc,
        name: procNames[proc.processId],
        active: true,
    }));

   setProcesses(temp);
在这种情况下,您可以将所有流程数据存储在temp上,然后在state上设置值。
别忘了回来。这是非常必要的。

您可以这样更改代码

    let temp = objProc.map((proc) => {
      return ({
        ...proc,
        name: procNames[proc.processId],
        active: true,
    }));

   setProcesses(temp);
在这种情况下,您可以将所有流程数据存储在temp上,然后在state上设置值。
别忘了回来。这是非常必要的。

你不应该试图直接改变状态。 (检查参考号:)

您可以使用
filter
map
方法,用全新状态更新当前状态:

const[processs,setprocesss]=useState([
{processId:0,状态:“true”},
{processId:1,状态:“true”}
]);
常量arrayObjUpdater=()=>{
const newArrayState=processs.map((currentProcess,idx)=>({
…当前进程,
名称:`PROCESS${idx}`,
活动:“真实”
}));
console.log(newArrayState);//请参见下面的输出
返回setprocesss(newArrayState);
}
arrayObjUpdater();
//输出:[{processId:0,名称:“process1”,状态:“true”,活动:“true”},{processId:1,名称:“process2”,状态:“true”,活动:“true”}]

你不应该试图直接改变状态。 (检查参考号:)

您可以使用
filter
map
方法,用全新状态更新当前状态:

const[processs,setprocesss]=useState([
{processId:0,状态:“true”},
{processId:1,状态:“true”}
]);
常量arrayObjUpdater=()=>{
const newArrayState=processs.map((currentProcess,idx)=>({
…当前进程,
名称:`PROCESS${idx}`,
活动:“真实”
}));
console.log(newArrayState);//请参见下面的输出
返回setprocesss(newArrayState);
}
arrayObjUpdater();
//输出:[{processId:0,名称:“process1”,状态:“true”,活动:“true”},{processId:1,名称:“process2”,状态:“true”,活动:“true”}]

.map
不是变异的。如果您想要
map
的结果,必须将其分配给一个变量:
const-mapped=objectProc.map(…)
.let-temp=objProc.map((proc)=>{({……proc,name:procNames[proc.processId],active:true,}))
.map
不是变异的。如果您想要
map
的结果,必须将其分配给一个变量:
const-mapped=objectProc.map(…)
.let-temp=objProc.map((proc)=>{({…proc,name:procNames[proc.processId],active:true,});