ReactJS / Redux调用其他reducer中的调度操作

时间:2017-11-23 17:40:46

标签: reactjs redux dispatch

如何在其他reducer中调度动作。 例如,我使用switch case LogsReducerADD_LOG创建reducer REMOVE_LOG。代码:

const addLog = (text) => ({type: 'ADD_LOG', text});
const removeLog = (id) => ({type: 'REMOVE_LOG', id});

const logsReducer = (state = {}, action) => {
  switch (action.type) {
    case 'ADD_LOG':
       // todo
    case 'REMOVE_LOG':
       // todo
    default:
      return state;
  }
};

我将logsReducer添加到combineReducers。 要发送操作,我在mapDispatchToProps内调用此方法。

dispatch(addLog('sample log'));
dispatch(removeLog(2);

还有问题。如何允许从日志缩减器外部发送消息。例如,来自其他reducer中的获取响应,例如。 contactReducer

1 个答案:

答案 0 :(得分:1)

  

如何允许从日志缩减器外部发送消息。例如,来自其他reducer中的获取响应,例如。 contactReducer?

通常存在异步API调用或操作调度队列意味着表示/域逻辑由进程组成,因此需要进程管理器来解析该任务。

通用解决方案是redux-saga,它结合了中间件和实时进程管理器。使用saga时,组件只会通知逻辑发生的操作,然后saga执行API调用,生成新操作,甚至执行Optimistic updates

此外,使用redux+saga方法,您的Web应用程序自动成为全栈事件源应用程序:通过编写前端代码,您还将获得同构的后端代码(如果使用某些工具,如{{ 3}})

查看使用传奇https://github.com/reimagined/resolveInfinite loop with redux-saga

的做法