我有以下状态:
new Map({
data: new Map({
all: null,
recent: null
}),
filters: new Map({
pagination: new Map({
currentPage: 1
}),
sortBy: new Map({
key: 'id',
order: 'desc'
})
}),
various: new Map()
}
我想仅更改currentPage
属性,只留下sortBy
,如下所示:
case PAGINATE:
return state.merge({
filters: new Map({
pagination: new Map({
currentPage: action.response
})
})
})
但相反,sortBy
已从filters
中删除,我必须执行以下操作才能使其正常工作:
case PAGINATE:
return state.merge({
filters: new Map({
pagination: new Map({
currentPage: action.response
}),
sortBy: new Map({
key: state.getIn(['filters', 'sortBy', 'key']),
order: state.getIn(['filters', 'sortBy', 'order'])
})
})
})
有更好的方法吗?
答案 0 :(得分:0)
你可以喜欢这个
return state.merge({
filters: state.get('filters').merge({
pagination: new Map({
currentPage: action.response
})
})
})
从here
了解详情答案 1 :(得分:0)
在您的情况下,您可以使用mergeIn
,这是updateIn
和merge
的组合,返回一个新的地图,但是在到达的地点执行合并的keyPath。
这样您的代码将如下所示:
case PAGINATE:
return state.mergeIn(['filters', 'pagination'], {
currentPage: action.response
})
从here了解mergeIn
的更多信息。