React Redux-почему mapStateToProps вызывается раньше конструктора?
Два вопроса:
- Почему
mapStateToPropsвызывается перед конструктором?
Как побочный эффект 1
constructor (props) {
base(props)
// props already have values from "mapStateToTprops"
}
Почему это делается автоматически?
- Не каждый
mapStateToPropsвызываетComponentWillReceiveProps(это тот случай, когда он загружается в первый раз) смотрите эту ссылку Введите описание ссылки здесь
Обновление 1
Если я хочу написать условие типа:
if (props.isAuthenticated) {
browserHistory.push("/admin/dashboard")
}
Какой метод будет наиболее подходящим для крючка. Держать в помните, что я хочу применить это условие к каждому изменению состояния (потому что в соответствии сЛео Ответ ComponentWillReceiveProps не является надежным)?
1 ответ:
mapStateToPropsне вызывается магически перед вашим конструктором. Это делается с помощью connect , который является компонентом более высокого порядка, который выполняетmapStateToPropsдо инициализации вашего компонента. Фактически,connectинициализирует ваш компонент в своем теле.connect(mapStateToProps, mapDispatchToProps)(YourComponent)
Почему
componentWillReceivePropsне выполняется? Потому что React не вызываетcomponentWillReceivePropsдля начального рендеринга, поэтому вы должны использоватьcomponentDidMountвместо этого.Вызывается, когда компонент получение новых реквизитов. Этот метод не вызывается для начальной визуализации.
Comments