React.js - 用简单的英语来说什么是 mapDispatchToProps?

React.js - In plain english what is mapDispatchToProps?

我已经学习 React/Redux 几天了。用通俗易懂的英语来说,什么是 mapDispatchToProps?

我有这个功能我不明白。

function mapDispatchToProps(dispatch) {
  return bindActionCreators({ selectBook: selectBook}, dispatch); 
}

mapStateToProps、mapDispatchToProps 和来自 react-redux 库的连接提供了一种方便的方式来访问您的商店的状态和调度功能。所以基本上 connect 是一个高阶组件,如果这对你有意义,你也可以作为包装器。因此,每次您的状态更改时,都会使用您的新状态调用 mapStateToProps,随后随着您的 props 更新组件将 运行 渲染函数在浏览器中渲染您的组件。 mapDispatchToProps 还在组件的 props 上存储键值,通常它们采用函数的形式。通过这种方式,您可以从组件的 onClick、onChange 事件中触发状态更改。

如果没有 mapDispatchToProps,您将需要手动调用 store 上的 dispatch。在这种情况下,您需要存储对象的引用。

store.dispatch(selectBook(argument))

mapDispatchToProps 设置(state, dispatch, and action)的语法糖并将其作为组件的 props。

所以代码:

function mapDispatchToProps(dispatch) {
    return bindActionCreators({ selectBook: selectBook}, dispatch); 
}

将导致

props: { 
    selectBook: (arguments) => { dispatch(selectBook(arguments)) } 
}

调度一个动作可以定义为触发一个或多个 reducer 期望的特定类型的动作。

所以简单来说,mapDispatchToProps 是一种将调度(动作创建者)作为道具映射到组件的方法。这样,您创建的动作创建者可以通过组件的道具访问。即 this.props.{action_creator}.

mapDispatchToProps 只是一个将动作创建者传递到您的组件中的接口,在同一组件中,可以访问这些 actions-creators作为道具。

它与 connect 函数一起使用,这样 action return 由 action-creator 被分派到 redux 存储中,应用程序的所有状态都驻留在其中。

当单个 action-creators[=30= 中存在多个 action 时,

mapDispatchToProps 会派上用场].

您可以在 mapDispatchToProps 函数中的 dispatch 参数。

mapStateToProps returns 除了您的应用 state 存储在全局存储中并作为 props.[=23 传递给您的组件外,什么都没有=]

mapDispatchToProps 将你的 action creator 包装在 redux 的 dispatch 方法中,并将它作为 prop 再次传递给你的容器。所以基本上全局商店的 state 包裹着 dispatch 的动作创建者都作为 props 一起传递给你的组件。您正在传递 state 和 redux 的 dispatch 方法作为组件的道具。

mapDispatchToProps = dispatch => ({
    dispatchAnAction: dispatch(actionCreator1)
})

这里连接的组件说 ComponentA 将接收道具,其中一个道具将是 dispatchAnAction,它由 mapDispatchToProps 返回,如上面的代码所示。您将像这样调用 dispatchAnAction this.props.dispatchAnAction() 并且 actionCreator1 返回的操作将被分派到全局 redux 存储。

P.S 如果你刚开始使用 redux this course 强烈推荐。