React Redux - 为什么在构造函数之前调用mapStateToProps?

Cri*_* E. 7 reactjs redux react-redux

两个问题:

  1. 为什么mapStateToProps在构造函数之前调用?
  2. 作为1的副作用

    constructor (props) { base(props) // props already have values from "mapStateToTprops" }

为什么要自动完成?

  1. 不是每次mapStateToProps调用ComponentWillReceiveProps(这是第一次加载时的情况)请参阅此链接在此处输入链接描述

更新1

如果我想写一个像这样的条件:

if (props.isAuthenticated) { browserHistory.push("/admin/dashboard") }

哪种方法最适合挂钩.请记住,我想在每次状态更改时强制执行此条件(因为根据leo的回答,ComponentWillReceiveProps不可靠)?

Lyu*_*mir 20

mapStateToProps在构造函数之前不会神奇地调用.它由connect完成,它是在组件初始化之前执行的高阶组件mapStateToProps.实际上,connect在组件中初始化组件.

connect(mapStateToProps, mapDispatchToProps)(YourComponent)
Run Code Online (Sandbox Code Playgroud)

为什么componentWillReceiveProps不执行?因为React不会调用componentWillReceiveProps初始渲染,所以你应该使用它componentDidMount.

componentWillReceiveProps

组件接收新道具时调用.初始渲染不会调用此方法.