matchDispatchToProps 不是react-redux 中的标准引用。我将概述connect HoC 的工作原理。
connect HoC 有四个参数; mapStateToProps、mapDispatchToProps、mergeProps 和 options。在mapStateToProps 中,您指定了您希望在组件中可用的商店中的哪些信息,如下所示:
mapStateToProps = ( state ) => ({
user: state.user
});
在mapDispatchToProps 中,您将功能作为道具提供给您的组件,这些功能可以访问您商店的dispatch 方法,如下所示:
mapDispatchToProps = ( dispatch ) => ({
updateUser: ( user ) => {
dispatch( updateUser( user ) );
}
});
注意:updateUser 是一个 actionCreater,你可以创建。
然后您可以将它们与connect HoC 一起使用,如下所示:
MyConnectedComponent = connect( mapStateToProps, mapDispatchToProps )( MyComponent );
现在您可以使用<MyConnectedComponent /> 并在<MyComponent /> 代码内部访问({ user, updateUser }) 属性。
注意:connect 也可以接受 null 参数。 connect()( Component ) 将使 dispatch 在您的组件中作为道具可用。这是没有任何参数的默认设置。您也可以connect( null, mapDispatchToProps )( Component ) 使updateUser 成为组件中的道具,而无需将组件连接到商店。如果您想从商店访问user,也可以connect( mapStateToProps )( Component ),但无需从组件内调度。
其他信息
[mergeProps(stateProps, dispatchProps, ownProps): props] (函数):
如果指定,则传递 mapStateToProps()、mapDispatchToProps() 和父 props 的结果。您从中返回的普通对象将作为道具传递给包装的组件。您可以指定此函数以根据 props 选择状态切片,或将动作创建者绑定到 props 中的特定变量。如果省略,则默认使用 Object.assign({}, ownProps, stateProps, dispatchProps)。
[选项](对象)
如果指定,则进一步自定义连接器的行为。除了可传递给connectAdvanced() 的选项(见下文)之外,connect() 还接受这些附加选项:
[pure](布尔值):如果为 true,如果相关的 state/props 对象根据它们各自的相等性检查保持相等,connect() 将避免重新渲染和调用 mapStateToProps、mapDispatchToProps 和 mergeProps。假设被包装的组件是一个“纯”组件,并且不依赖于任何输入或状态,除了它的 props 和选定的 Redux 存储的状态。默认值:真
[areStatesEqual](功能):当纯时,将传入的存储状态与其先前的值进行比较。默认值:strictEqual (===)
[areOwnPropsEqual](功能):当纯时,将传入的道具与其先前的值进行比较。默认值:shallowEqual
[areStatePropsEqual](功能):纯时,将 mapStateToProps 的结果与其之前的值进行比较。默认值:shallowEqual
[areMergedPropsEqual](功能):纯时,将mergeProps的结果与其先前的值进行比较。默认值:shallowEqual
[storeKey](字符串):从何处读取存储的上下文的键。如果您处于拥有多家商店的不可取的位置,您可能只需要这个。默认值:“商店”
完整的文档可以在reactjs/react-redux找到。