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

时间:2016-09-21 14:00:35

标签: reactjs redux react-redux

两个问题:

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

    的副作用

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

  3. 为什么要自动完成?

    1. 并非每个mapStateToProps都会调用ComponentWillReceiveProps(这是第一次加载时的情况)请参阅此链接enter link description here
    2. 更新1

      如果我想写一个像:

      这样的条件

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

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

1 个答案:

答案 0 :(得分:15)

mapStateToProps在构造函数之前不会被神奇地调用。它由connect完成,Higher Order ComponentcomponentWillReceiveProps,在您的组件初始化之前执行mapStateToProps。实际上,connect会在您的主体中初始化您的组件。

connect(mapStateToProps, mapDispatchToProps)(YourComponent)

为什么componentWillReceiveProps没有执行?因为React没有为初始渲染调用componentWillReceiveProps,所以您应该使用componentDidMount代替。

Material UI

  

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