繁体   English   中英

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

[英]How to access properties added by mapStateToProps in mapDispatchToProps?

React Redux 提供了函数connect来绑定 Redux statedispatch给 React 组件(作为属性)。

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

mapStateToProps(state, [ownProps]): stateProps

mapDispatchToProps(dispatch, [ownProps]): dispatchProps

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

例如,我使用函数mapStateToProps将属性propertyFromState添加到组件中,如何在函数mapDispatchToProps访问属性propertyFromState

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

您无法访问 mapDispatchToProps 中的道具。 相反,您可以在调用函数时将参数传递给该函数。 例如,如果你想将 prop 传递给动作,你可以通过多种方式做到这一点。

第一的:

function mapDispatchToProps(dispatch) {
  return {
    onNameChanged: (name) => dispatch({ type: 'NAME_CHANGED', payload: name })
  }
}

或者

function mapDispatchToProps(dispatch) {
   return {
     actions: bindActionCreator(action, dispatch);
   }
}

从你的组件调用 this.props.actions(propertyFromState)。 在actions.js中创建动作来接受这样的参数

function action1(property){
  return { type: 'NAME_CHANGED', payload: property }
}

在 mapDispatchToProps 中无法访问状态是荒谬的。 redux 有一个替代方案, Dynadux ,它很简单,解决了 Redux 的繁琐。

有用的链接: 什么是 mapDispatchToProps?

mapStateToProps() 用于从 Redux/应用程序状态访问变量

function mapStateToProps(state) {
return {
    token: reduxState.token
};
}

可以使用 this.props.token 在 React 组件内部访问它。

并且 mapDispatchToProps 触发一个动作事件(调度一个可能导致应用程序状态改变的动作)

const mapDispatchToProps = (dispatch) =>  {
return{
    send:(variable) =>{dispatch(send(variable))}
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM