React Redux-почему mapStateToProps вызывается раньше конструктора?



Два вопроса:




  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")
}



Какой метод будет наиболее подходящим для крючка. Держать в помните, что я хочу применить это условие к каждому изменению состояния (потому что в соответствии сЛео Ответ ComponentWillReceiveProps не является надежным)?

614   1  

1 ответ:

mapStateToProps не вызывается магически перед вашим конструктором. Это делается с помощью connect , который является компонентом более высокого порядка, который выполняет mapStateToProps до инициализации вашего компонента. Фактически, connect инициализирует ваш компонент в своем теле.

connect(mapStateToProps, mapDispatchToProps)(YourComponent)

Почему componentWillReceiveProps не выполняется? Потому что React не вызывает componentWillReceiveProps для начального рендеринга, поэтому вы должны использовать componentDidMount вместо этого.

ComponentWillReceiveProps

Вызывается, когда компонент получение новых реквизитов. Этот метод не вызывается для начальной визуализации.

Comments

    Ничего не найдено.