Cristian E. Cristian E. - 1 year ago 151
React JSX Question

React Redux - Why mapStateToProps is called before constructor?

Two questions:

  1. Why
    is called before constructor?

  2. As a side-effect of 1

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

why that is being done automagically?

  1. Not every
    (this is the case when it loads first time) See this link enter link description here

Update 1

If I want to write a condition like:

if (props.isAuthenticated) {

Which method will be most suitable to hook. Keep in mind that I want to enforce this condition on each state change (because according to leo's answer ComponentWillReceiveProps is not reliable)?

leo leo
Answer Source

mapStateToProps is not called magically before your constructor. It is done by connect which is a Higher Order Component that executes mapStateToProps before your component is initialised. In fact, connect initialises your component in its body.

connect(mapStateToProps, mapDispatchToProps)(YourComponent)

Why componentWillReceiveProps not executed? Because React doesn't call componentWillReceiveProps for the initial render, so you should use componentDidMount instead.


Invoked when a component is receiving new props. This method is not called for the initial render.