Реагирует - почему состояние родительского компонента изменяется при использовании состояния обновления для дочернего элемента?
Когда я изменяю состояние дочерних компонентов, делая что-то вроде этого:
// inside child component
var stateToSet = this.state;
stateToSet[active] = false;
this.setState(nextState);
Родительское состояние изменяется без перерисовки.
Я полагаю, родительский компонент this.state
ссылаются, когда stateToSet[active] = false
, так что я Object.assign
Я хотел бы изменить состояние и каждое свойство, а затем оно работает без изменения состояния Родителя.
Я хотел бы сейчас, почему это происходит. Может ли это быть намеченным поведением? Может ли быть проблема в работе Brunch(мой компилятор) и объединении файлов?
Есть идеи?
1 ответ
Да, так что вы никогда не должны изменять состояние напрямую, как вы делаете здесь, потому что this.setState
фактически активирует все методы жизненного цикла вашего компонента, а изменение состояния, как здесь, не будет. Эта функция принимает ключи, которые вы хотите изменить, поэтому нет необходимости Object.assign
или же ...
,
this.setState({ active: false })
Я не уверен, что вы подразумеваете под родителем / ребенком и почему установка родительского элемента ребенка будет иметь какое-либо отношение к родительскому, но если вы имеете в виду, что родительский объект не перерисовывается при изменении состояния дочернего элемента, то это предполагаемое поведение.