在React Redux中将状态值传递给mapDispatchToProps

时间:2019-09-30 12:48:29

标签: reactjs redux

免责声明: 我刚刚开始学习React和Redux,所以这可能是一个菜鸟问题,但请忍受。

所以,这是我的问题的简称:

import { connect } from 'react-redux'
import someComponent from 'some_file_that_exports_component_as_default_export' 

const mapStateToProps = state => ({ state })

const mapDispatchToProps = (dispatch, ownProps) => ({
    fetchComplianceLink() {
     dispatch({
      type: 'ACTION_TYPE',
      payload: {
        someKey: <XYZ>, // --> this value (XYZ) I want from my state
      },
     })
    },
})

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(someComponent)

我也尝试了mergeProps,但没有成功。可能是我的方法有误,或者可能是 mergeProps 不能解决此问题。请说明一下。我如何从

获取 XYZ 的值

在此先感谢& 快乐编码 :)

1 个答案:

答案 0 :(得分:2)

您不能将存储状态(动态状态)传递给mapDispatchToProps,它只是返回一个对象,该对象具有您定义的功能并可以帮助您how to dispatchwhat dispatch to do。 您需要这样做:

const mapStateToProps = state => ({
    key: state... // get value of store here to pass into Component
})

const mapDispatchToProps = dispatch => ({
    fetchComplianceLink(value) {
        dispatch({
           type: 'ACTION_TYPE',
           payload: {
               // someKey: <XYZ>, // --> this value (XYZ) I want from my state
               someKey: value
           },
        })
    },
})

fetchComplianceLink中使用Component

ComponentDidMount() { // or ComponentWillMount
    const { key, fetchComplianceLink } = this.props;
    // Call fetchComplianceLink with key got from store
    fetchComplianceLink(key);
}
render () {
    return (

    )
}