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

IT技术 reactjs redux react-redux
2021-05-05 18:28:41

两个问题:

  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 不可靠)?

1个回答

mapStateToProps在构造函数之前不会神奇地调用。它是由connect完成的,它是一个高阶组件mapStateToProps在您的组件初始化之前执行事实上,connect在它的主体中初始化你的组件。

connect(mapStateToProps, mapDispatchToProps)(YourComponent)

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

组件将接收props

当组件接收新的 props 时调用。初始渲染不会调用此方法。