如何将两个单独的操作对象传递给redux中间件中的reducer

时间:2017-10-12 05:17:23

标签: reactjs redux react-redux

我有一个简单的中间件来处理作为promise对象的API响应数据。

现在,我希望在解析promise并将已解析的数据格式化为某种格式后,将两个单独的操作对象传递给reducer。

但是,我不确定如何从我的中间件传递两个单独的操作对象,因为'返回'只能使用一次。

处理这种情况的适当方法是什么?

中间件

const asyncMiddleware = store => next => action => {

    // some codes here

    action.promise.then(response => {

        if (action.type === 'YYY') {
            //some codes here to format API response data.
            const newAction1 = { type: 'type1', payload: 'original data' }; 
            const newAction2 = { type: 'type2', payload: 'formatted data' };        

            // does this work properly?
            // I dont want to do this. [newAction1, newAction2] as I lose consistency.
            next(newAction1);
            return next(newAction2);

        }

        return next(action);

    });
};

1 个答案:

答案 0 :(得分:0)

感谢评论中提供答案的人。我只是整理了它并在这里提供了一个完整的片段。通常 返回 最终操作, 手动调度 任何其他操作。

const asyncMiddleware = store => next => action => {

    action.promise.then(response => {

        if (action.type === 'YYY') {
            const newAction1 = { type: 'type1', payload: 'original data' }; 
            const newAction2 = { type: 'type2', payload: 'formatted data' };        

            store.dispatch(newAction1);
            return newAction2;
        }

        return next(action);
    });

};