Реагирует - почему состояние родительского компонента изменяется при использовании состояния обновления для дочернего элемента?

Когда я изменяю состояние дочерних компонентов, делая что-то вроде этого:

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

Я не уверен, что вы подразумеваете под родителем / ребенком и почему установка родительского элемента ребенка будет иметь какое-либо отношение к родительскому, но если вы имеете в виду, что родительский объект не перерисовывается при изменении состояния дочернего элемента, то это предполагаемое поведение.

Другие вопросы по тегам