在下面的代码中,我试图将state.userData.userDetails从redux-store传递给getleftpaneProductCatalogue(),但componentDidMount()无法访问state.userData.userDetails。我尝试将state.userData.userDetails赋值给this.prop.userProfile,但this.prop.userProfile仍然是一个空值。如何在componentDidMount中访问prop
import React,{Component} from 'react';
import { connect } from 'react-redux';
import {Row, Col } from 'react-materialize';
import {getleftpaneProductCatalogue} from '../actions/leftpane-actions';
import ProductCatalogueLeftPaneComp from '../components/pages/product-catalogue-leftpane';
class ProductCatalogueLeftPane extends Component {
constructor(props) {
super(props)
}
componentDidMount() {
console.log('this.props^', JSON.stringify(this.props));
this.props.getleftpaneProductCatalogue().then((data) => {
console.log('productdata', data);
})
}
render() {
return (
<div>
{JSON.stringify(this.props.userProfile)}
</div>
)
}
}
const mapStateToProps = (state) => {
console.log('state^', JSON.stringify(state));
return {leftpaneProductCatalogue: state.leftpaneProductCatalogue, userProfile: state.userData.userDetails};
};
const mapDispatchToProps = (dispatch) => {
return {
getleftpaneProductCatalogue: () => dispatch(getleftpaneProductCatalogue()),
};
};
export default connect(mapStateToProps, mapDispatchToProps)(ProductCatalogueLeftPane);发布于 2018-08-23 18:26:17
您可以直接在mapDispatchToProps中访问状态并将其传递给getleftpaneProductCatalogue
componentDidMount() {
const { dispatch, getleftpaneProductCatalogue }
dispatch(getleftpaneProductCatalogue())
}
const mapDispatchToProps = dispatch => {
return {
getleftpaneProductCatalogue: () => (dispatch, getState) => {
const state = getState()
const details = state.userData.userDetails
return dispatch(getleftpaneProductCatalogue(details))
},
dispatch
}
}但是,通过mapStateToProps传递状态的方法仍然有效,但更加冗长。因此,问题会出现在其他地方。
这是我的赌注。我猜你通过异步API调用在代码中的某个地方得到了userData,但它还没有被获取。如果是这样的话-那么你应该先等待数据被获取,然后你才能在你的组件ProductCatalogueLeftPane中访问它。
https://stackoverflow.com/questions/51982033
复制相似问题