首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从react的componentDIdMount()中访问redux-store

如何从react的componentDIdMount()中访问redux-store
EN

Stack Overflow用户
提问于 2018-08-23 17:04:08
回答 1查看 1.8K关注 0票数 0

在下面的代码中,我试图将state.userData.userDetailsredux-store传递给getleftpaneProductCatalogue(),但componentDidMount()无法访问state.userData.userDetails。我尝试将state.userData.userDetails赋值给this.prop.userProfile,但this.prop.userProfile仍然是一个空值。如何在componentDidMount中访问prop

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 18:26:17

您可以直接在mapDispatchToProps中访问状态并将其传递给getleftpaneProductCatalogue

代码语言:javascript
复制
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中访问它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51982033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档