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

时间:2018-05-17 23:49:02

标签: javascript reactjs redux react-redux jsx

React Redux提供函数connect以将Redux statedispatch绑定到React组件(作为属性)。

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

mapStateToProps(state, [ownProps]): stateProps

mapDispatchToProps(dispatch, [ownProps]): dispatchProps

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

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

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

3 个答案:

答案 0 :(得分:0)

您无法访问mapDispatchToProps中的道具。相反,你可以在调用它时将参数传递给函数。例如,如果要将道具传递给动作,可以通过多种方式执行此操作。

首先:

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 }
}

答案 1 :(得分:0)

有用的链接:What is mapDispatchToProps?

mapStateToProps()用于从Redux / application state

访问变量
function mapStateToProps(state) {
return {
    token: reduxState.token
};
}

可以使用this.props.token。

在React Component中访问它

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

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

答案 2 :(得分:0)

在mapDispatchToProps中无法访问状态是荒谬的。 Dynadux是redux的替代方法,它很简单,解决了Redux的麻烦。