从componentDidMount方法访问道具状态给出未定义

时间:2019-03-20 21:15:21

标签: javascript reactjs

你好,我是新来的反应者和还原者,我试图从componentDidMount方法访问存储,但始终给我未定义的内容,当从mapActionToState控制台状态时,第一次给我未定义的内容,然后给我真实的状态

import React, {Component} from 'react'
import {connect} from "react-redux";

class UserProperties extends Component {
  constructor(props) {
    super(props);
    this.state = {
      tabs: {
        published: true,
        drafts: false,
        pending: false,
        rejected: false
      }
    }
  }

  componentDidMount() {
    document.title = "Add Property | Real Estate";
    console.log(this.state)
  }

  render() {
    return (
        <div>

        </div>
    )
  }
}

let mapStateToProps = state => {
  console.log(state)
    return state.user
};
export default connect(mapStateToProps)(UserProperties);

1 个答案:

答案 0 :(得分:0)

redux状态被注入到您的道具中,因此要在componentDidMount中访问它,您需要登录this.props而不是this.state。请注意,mapStateToProps需要一个Object,其中的键对应于道具中的键。也就是说,如果您的state.user看起来像

{
 name: 'Name',
 role: 'administrator'
}

然后在您当前的代码中,您会发现道具分别具有两个属性this.props.namethis.props.role

一种更好的书写方式是

const mapStateToProps = state => {
  console.log(state)
    return {user: state.user}
};

之后,您的用户对象可以以this.props.user的身份访问。