发送反应还原剂

时间:2017-11-22 07:15:46

标签: reactjs redux react-redux

我是新手做出反应和减少xo我的问题听起来很基本。

  1. 发送是什么意思?我指的是发送行动一词。
  2. 为什么我们需要mapDispatchToProps来存储对redux的操作?我们可以简单地导入一个动作并使用它。我有一个场景,我必须在安装组件时加载数据。

2 个答案:

答案 0 :(得分:1)

@mariazahid mapDispatchToProps会将操作绑定到您的组件,以便您可以将其传递给您的演示组件。这是一种通常在使用Redux和React时使用的模式。

您可以导入操作并仅调度操作,但在大多数情况下,您可以调度容器 - >使用组件模式。容器是操作映射到的位置,此组件的状态和唯一目标是将此数据传递给用于显示该数据的组件。

在团队合作时,它是一种易于采用的模式。您只需要知道容器以及它如何将所需的操作/数据传递给孩子们,而不是从左侧和中间导入操作。

答案 1 :(得分:0)

从实施的角度来看,dispatch只是一种用于与您的Reducer通信的方法

假设您的操作看起来像这样

function myAction() {
  return { type: 'MY_ACTION' }; 
}
  

您正在尝试与响应操作类型的缩减器进行通信' MY_ACTION'

在您mapDispatchToProps中,您通常会做这样的事情;

function mapDispatchToProps(dispatch) {
  return { actions: bindActionCreators(myActions, dispatch) }
}

有效地,您将行动包装(绑定)到调度方法;

function bindActionCreators(actions, dispatch) {
  // this is a very trivial implementation of what bindActionCreators does

  let wrappedActions = {};
  Object.keys(actions).forEach(action => 
    // for every action, return a function that calls dispatch on the result of what your action returns
    return function(...args) {
      // remember here that dispatch is the only way you can communicate with the reducers and you're action's type will determine which reducer responds to return the new state
      return dispatch(actions[action](..args));
    }
  );
}

所以,这些"绑定"现在,操作已分配给组件中的props.actions