我是否需要在我的中间件中使用`next`或`store.dispatch`

时间:2016-01-17 07:57:09

标签: javascript redux

我正在建立我的异步中间件,我想从中发送几个动作。以下是目前的情况:

const [ requestType, successType, failureType ] = types;
next({type: requestType});

return call().then(
    result => {
        return next({
            result,
            type: successType
        })
    },
    error =>  {
        // I want to dispath the `sendNotification()` action here
        // to add item to notifications center
        // should I use `next` or `store.dispath`?

        //this way?
        store.dispath(failedNotification);
        //or this way?
        next(failedNotification);

        return next({
            type: failureType,
            error: error.message || 'Something bad happened',
            errorType: error.errorType
        })
    }
)

我的问题出现在上面代码中的这些评论中:

      // I want to dispath the `sendNotification()` action here
      // to add item to notifications center
      // should I use `next` or `store.dispath`?

我之所以提出这个问题,是因为根据我对applyMiddleware next()的实施细节的理解,store.dispatch将通过剩余的中间件链传递一个动作,而{ {1}}将遍历整个中间件链,包括当前的中间件。

1 个答案:

答案 0 :(得分:2)

如果您使用store.dispatch(),则调度将再次触发您的中间件并再次呼叫call()。有时它可能会导致无限循环,因此调用next()看起来是更好的选择。