【发布时间】:2016-07-29 13:24:36
【问题描述】:
所以我一直在使用 redux 和 reactjs,虽然问题不相关:
我有这个收藏
const items = [
{id: 0, name: 'one'},
{id: 1, name: 'two'},
{id: 2, name: 'three'}
]
const itemsWithTheFlag = [
{id: 0, flag: false},
{id: 1, flag: true},
{id: 2, flag: false},
]
那么我的初始状态是:
{
items: items
}
现在我想知道如何在 items 数组中执行查找和更新,
我的一个功能是模拟async 请求并从itemsWithTheFlag 接收项目
export function fetch(id) {
const desiredItem = find(itemsWithTheFlag, (item) => (item.id === id))
return (dispatch, getState) => {
return new Promise((resolve) => {
setTimeout(() => {
dispatch(receiveItem(desiredItem))
resolve()
}, 100)
})
}
}
现在我需要帮助更新状态,更新后的 merged 值,我收到来自 fetch 和初始状态 items
[RECEIVE_ITEM]: (state, action) => {
return Object.assign({}, state, {
// how ??
})
}
我当然想保持不变性,使用 lodash 也可以
【问题讨论】:
-
itemsWithTheFlag有重复的 ID。这是故意的还是只是一个错字? -
@YuryTarabanko 是的,这是一个错字
标签: javascript reactjs redux lodash array-merge