无法弄清楚如何使用多个页面对象添加新的idea元素。另外,当我添加具有唯一ID的新idea元素时,我还需要将页面对象连接到现有的idea元素上。如何使用传播运算符进行过滤以检查idea元素是否存在,然后concat页面对象是否添加新元素? 这是我的默认结构数据示例:
ideaID1: { 0:{title:'first', desc:'abc'}
1:{title:'second', desc:'lmn'}
2:{title:'third', desc:'pqr'}
}
ideaID2: { 0:{title:'first', desc:'abc'}
1:{title:'second', desc:'pqr'}
2:{title:'third', desc:'lmn'}
}
我想先添加ideaID1(唯一ID),然后在用户保存页面时收到该想法的0、1、2页。因此,我需要根据它们属于哪个创意来合并这些页面。有人可以通过化简运算符帮助我使用reducer添加一个新的想法,然后将页面添加到该idea元素(如果不存在的话)。如果不存在,则创建一个新的想法?
我正在接收以下有效负载并编写了以下reducer
{ideaID: 1, pagePostion: 0, title:'any', desc: 'abc'}
{ideaID: 1, pagePostion: 1, title:'any', desc: 'per'}
case 'ADD_IDEA':
return {
...state,
[action.payload.ideaid]:{
[action.payload.pagePosition]: [...action.payload]
}
}
我该如何合并第二个有效负载,并检查ideaID是否存在,然后再对其进行连接:
return { ...state, { ...state[action.ideaid],
[action.payload.pagePosition]: [...action.payload] } }
如果找不到ideaID怎么办?
答案 0 :(得分:0)
您会考虑使用lodash/fp
吗?
如果地图/数组不存在,则会创建地图/数组。
您需要按照评论中的建议在页面上使用数组。
import { set } from 'lodash/fp'
return set(
[action.ideaid, action.payload.pagePosition],
action.payload,
state
)
https://gist.github.com/jfmengels/6b973b69c491375117dc#_setpath-value-object