2016-12-01 2 views
-1

У моего дочернего компонента есть состояние, которое представляет собой пустой массив, называемый answers.Компоненты для детей сохраняют состояние даже при обновлении родительского состояния

Этот массив заполняется индексом li, который содержит входные данные, которые могут быть либо радио, либо флажком. Поэтому, если у вас есть 4 элемента checkbox li и вы нажимаете First и Last, массив будет содержать 0 и 3.

Когда я нажимаю «next», этот массив передается как аргумент функции, передаваемой из родительского компонента и эта функция добавляет этот массив из дочернего состояния в родительское.

Поскольку родительское состояние становится перерисовывается я предполагал мой ребенок компонент, когда созданный снова будет иметь состояние по умолчанию, что пустой массив, но состояние у него есть на самом деле так же, как и раньше я назвал следующую функцию, скажем, 0 и 3.

Мой конструктор у ребенка также не называется 2-й раз. Вы можете видеть это here.

ответ

0

Когда вы передаете функции обратного вызова ребенку Question, эти функции не были связаны с родительским объектом Run. Таким образом, когда Question назвал эти функции, переменная самообслуживания this была undefined.

изменение Попробуйте это:

... 
onPrev = {this.onPrev} 
onNext = {this.onNext} 
... 

To:

... 
onPrev = {this.onPrev.bind(this)} 
onNext = {this.onNext.bind(this)} 
... 

Там должна быть ошибка выброшен в консоли браузера. Если это не решит вашу проблему, возможно, вы также опубликуете сообщение об ошибке с консоли.

Смежные вопросы