如何在mapDispatchToProps中访问mapStateToProps添加的属性?

Zhi*_*ang 5 javascript jsx reactjs redux react-redux

connectReact Redux 提供了绑定 ReduxstatedispatchReact 组件的功能(作为属性)。

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

mapStateToProps(state, [ownProps]): stateProps

mapDispatchToProps(dispatch, [ownProps]): dispatchProps
Run Code Online (Sandbox Code Playgroud)

如何mapStateToProps在函数中访问函数添加的属性mapDispatchToProps

例如,我使用函数向组件mapStateToProps添加属性,如何访问函数中的属性?propertyFromStatepropertyFromStatemapDispatchToProps

我尝试使用参数ownProps来访问它,但它是undefined.

Vin*_*lla 3

您无法访问 mapDispatchToProps 中的 props。相反,您可以在调用函数时将参数传递给该函数。例如,如果您想将 prop 传递给操作,您可以通过多种方式执行此操作。

第一的:

function mapDispatchToProps(dispatch) {
  return {
    onNameChanged: (name) => dispatch({ type: 'NAME_CHANGED', payload: name })
  }
}
Run Code Online (Sandbox Code Playgroud)

或者

function mapDispatchToProps(dispatch) {
   return {
     actions: bindActionCreator(action, dispatch);
   }
}
Run Code Online (Sandbox Code Playgroud)

从您的组件中只需调用 this.props.actions(propertyFromState) 即可。在 actions.js 中创建接受参数的操作

function action1(property){
  return { type: 'NAME_CHANGED', payload: property }
}
Run Code Online (Sandbox Code Playgroud)