我将从API中获得一个深度嵌套的状态 - 例如:
[{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": []
}]
}]
}]
}]
(请忽略重复的ID等)
现在有以下要求:
e.g。
<div>
text
<div>
text
</div>
</div>
我需要能够在redux store
此列表可能很大 - 至少有3k项(理论上可以正常工作)
我尝试了什么:
让所有事情都无人问津:
嵌套所有内容:
什么可以解决这个问题?什么应该是架构
答案 0 :(得分:2)
像immutability-helper这样的东西可能会对你有用。
const state = [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": []
}]
}]
}]
}];
const newState = update(state, {
0: {
children: {
0: {
children {
0 : {
children: {
0: {
"id": { $set: 2}
}
}
}
}
}
}
};
return newState;
[{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 1,
"text": "test",
"children": [{
"id": 2,
"text": "test",
"children": []
}]
}]
}]
}];
此处的0
可以替换为payload
中的某些索引;我在这里使用0作为示例数组,其中只有1个元素。这是非常深层次的嵌套,正如评论指出的那样,你可以做的任何展平都会使更新变得更容易。