你好,我是新来的反应者和还原者,我试图从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);
答案 0 :(得分:0)
redux状态被注入到您的道具中,因此要在componentDidMount中访问它,您需要登录this.props
而不是this.state
。请注意,mapStateToProps
需要一个Object
,其中的键对应于道具中的键。也就是说,如果您的state.user
看起来像
{
name: 'Name',
role: 'administrator'
}
然后在您当前的代码中,您会发现道具分别具有两个属性this.props.name
和this.props.role
。
一种更好的书写方式是
const mapStateToProps = state => {
console.log(state)
return {user: state.user}
};
之后,您的用户对象可以以this.props.user
的身份访问。