React / Redux-多次分派同一动作

时间:2018-10-14 14:52:59

标签: reactjs redux

在我的react应用程序中,我有一个特殊的动作分配情况,即在数组上映射,然后为每个项目分配一个动作-所有项目都执行相同的动作。

是否只有在分派最后一个动作时,我才能在减速器中设置状态?

例如:当所有动作都已分派时,我希望加载状态为false。但是目前状态将在第一个调度的动作上设置,因此应用程序认为我们已完成加载。

有人可以帮我吗?

TIA。

1 个答案:

答案 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)
        }
    }