两个问题:
- 为什么
mapStateToProps
在构造函数之前调用? -
作为1
的副作用constructor (props) { base(props) // props already have values from "mapStateToTprops" }
为什么是自动完成的?
- 不是每个
mapStateToProps
调用ComponentWillReceiveProps
(这是第一次加载时的情况)看到这个链接在这里输入链接描述
更新1
如果我想写这样一个条件:
if (props.isAuthenticated) {
browserHistory.push("/admin/dashboard")
}
哪个方法最适合hook。请记住,我想在每个状态更改上强制执行此条件(因为根据leo的回答ComponentWillReceiveProps不可靠)?
mapStateToProps
不会在构造函数之前被神奇地调用。它是由connect完成的,它是一个高阶组件,在组件初始化之前执行mapStateToProps
。事实上,connect
在它的主体中初始化了你的组件。
connect(mapStateToProps, mapDispatchToProps)(YourComponent)
为什么没有执行componentWillReceiveProps
?因为React在初始渲染时不调用componentWillReceiveProps
,所以你应该使用componentDidMount
。
componentWillReceiveProps
当组件接收新道具时调用。初始渲染时不调用此方法。