在我的react应用程序中,我有一个特殊的动作分配情况,即在数组上映射,然后为每个项目分配一个动作-所有项目都执行相同的动作。
是否只有在分派最后一个动作时,我才能在减速器中设置状态?
例如:当所有动作都已分派时,我希望加载状态为false。但是目前状态将在第一个调度的动作上设置,因此应用程序认为我们已完成加载。
有人可以帮我吗?
TIA。
答案 0 :(得分:0)
一种选择是从迭代器索引中减去数组长度,并将其提供给reducer,如果它为0,则知道其最后一次迭代,然后设置应用程序加载状态。
// action creator
arrayData.map((item,i) => {
const indexOffset = i + 1
dispatch({
type: 'APP:UPDATE_STATE',
key: item.key,
val: item.value,
iteratorIndexOffset: arrayData.length - indexOffset
})
})
// reducer
switch(action.type){
case 'APP:UPDATE_STATE':
return {
...state,
[action.key]: action.val,
// if value is one then its the last element in the array
appLoading: (action.iteratorIndexOffset > 0)
}
}