两个问题:
mapStateToProps
?作为1
的副作用 constructor (props) {
base(props)
// props already have values from "mapStateToTprops"
}
为什么要自动完成?
mapStateToProps
都会调用ComponentWillReceiveProps
(这是第一次加载时的情况)请参阅此链接enter link description here 如果我想写一个像:
这样的条件 if (props.isAuthenticated) {
browserHistory.push("/admin/dashboard")
}
哪种方法最适合挂钩。请记住,我想在每次状态更改时强制执行此条件(因为根据 leo的答案,ComponentWillReceiveProps不可靠)?
答案 0 :(得分:15)
mapStateToProps
在构造函数之前不会被神奇地调用。它由connect完成,Higher Order Component是componentWillReceiveProps,在您的组件初始化之前执行mapStateToProps
。实际上,connect
会在您的主体中初始化您的组件。
connect(mapStateToProps, mapDispatchToProps)(YourComponent)
为什么componentWillReceiveProps
没有执行?因为React没有为初始渲染调用componentWillReceiveProps
,所以您应该使用componentDidMount
代替。
组件接收新道具时调用。初始渲染不会调用此方法。