Reactjs 更新/插入嵌套对象React/Redux
我在Redux存储中的数组中有一个JSON对象Reactjs 更新/插入嵌套对象React/Redux,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我在Redux存储中的数组中有一个JSON对象 editor: [] 1 item 0: {} 1 key flow {} 3 keys id: "1234" name: "qaz" tasks: [] 5 items 更新或插入新任务数组的最佳方法是什么 我的行为是 export function insertTasks(tasks) { return { type: 'INSERT_TASKS',
editor: [] 1 item
0: {} 1 key
flow {} 3 keys
id: "1234"
name: "qaz"
tasks: [] 5 items
更新或插入新任务数组的最佳方法是什么
我的行为是
export function insertTasks(tasks) {
return {
type: 'INSERT_TASKS',
tasks
};
}
减速器是
case 'INSERT_TASKS':
state[0].flow.tasks = [];
state[0].flow.tasks = action.tasks;
return state;
我正在正确地传递action.type和action任务,并且似乎正在更新对象中的任务数组。但是这个代码感觉不正确
当我添加一个全新的流时,我的减速器是
case 'ADD_FLOW':
state = [];
return [
...state, {
// index: 1,
flow : action.flow
}
]
感觉好多了。
因此,我想我正在寻找在Redux中访问深度数组的最佳方法 您可以继续使用spread语法,深度可根据需要而定。例如:
var o = {
foo: bar,
baz: {
id: 1,
title: 'title',
description: 'description'
},
bang: [1, 2, 3]
};
然后返回这个:
return {
...o,
baz: {
...o.baz,
description: 'new description'
},
bang: [...o.bang, 4, 5]
};
这将导致:
{
foo: bar,
baz: {
id: 1,
title: 'title',
description: 'new description'
},
bang: [1, 2, 3, 4, 5]
}
您可以继续使用spread语法,深度可根据需要而定。例如:
var o = {
foo: bar,
baz: {
id: 1,
title: 'title',
description: 'description'
},
bang: [1, 2, 3]
};
然后返回这个:
return {
...o,
baz: {
...o.baz,
description: 'new description'
},
bang: [...o.bang, 4, 5]
};
这将导致:
{
foo: bar,
baz: {
id: 1,
title: 'title',
description: 'new description'
},
bang: [1, 2, 3, 4, 5]
}
您希望避免重新分配或变异减缩器中的任何内容。为了实现这一点,假设您的状态数组中只有一个项目,您可以执行以下操作:
case 'INSERT_TASKS':
return [{
...state[0],
tasks: actions.tasks,
}];
spread(
…
)操作符在这里所做的是从状态[0]
获取所有键,并使用当前处于状态[0]的所有相同键创建一个新对象
之后,我们将用新的任务数组替换任务
键。您希望避免重新分配或更改还原器中的任何内容。为了实现这一点,假设您的状态数组中只有一个项目,您可以执行以下操作:
case 'INSERT_TASKS':
return [{
...state[0],
tasks: actions.tasks,
}];
spread(
…
)操作符在这里所做的是从状态[0]
获取所有键,并使用当前处于状态[0]的所有相同键创建一个新对象
之后,我们将用新的任务数组替换任务
键。谢谢我需要多读一点wit spread运算符:-)谢谢我需要多读一点wit spread运算符:-)谢谢我需要多读一点wit spread运算符:-)使用库,否则你会发疯的。很多人会向FB推荐Immutable.js
,但还有其他的,比如说,它非常好。使用一个库,否则你会发疯的。很多人会向FB推荐Immutable.js
,但也有其他人,比如说,它很不错。