React Redux提供函数connect
以将Redux state
和dispatch
绑定到React组件(作为属性)。
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
mapStateToProps(state, [ownProps]): stateProps
mapDispatchToProps(dispatch, [ownProps]): dispatchProps
如何在功能mapStateToProps
中访问按功能mapDispatchToProps
添加的属性?
例如,我使用函数mapStateToProps
将属性propertyFromState
添加到组件,如何访问函数propertyFromState
中的属性mapDispatchToProps
?
我尝试使用参数ownProps
来访问它,但它是undefined
。
答案 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的麻烦。