免责声明: 我刚刚开始学习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 的值在此先感谢& 快乐编码 :)
答案 0 :(得分:2)
您不能将存储状态(动态状态)传递给mapDispatchToProps
,它只是返回一个对象,该对象具有您定义的功能并可以帮助您how to dispatch
和what 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 (
)
}