2017-02-07 5 views
0

В React предполагается, что у меня есть целочисленная переменная myProperty, которая возвращается из getDafaultProps, если я console.log (myProperty) до и после вызова this.setProps (myProperty + 1) в функции обновления консоль регистрирует одно и то же значение для myProperty. Свойство обновляется после завершения функции и в следующий раз, когда я вызываю свою функцию, myProperty - это новое значение, но кто-нибудь знает, почему или, скорее, объясните мне, почему myProperty не обновляется сразу после вызова this.setProps ?this.setProps не обновляет автоматически

спасибо, что нашли время ответить. Соответствующий код ниже

getDefaultProps: function() { 
    return { colorIndex: -1 }; 
}, 
update: function() { 
    console.log("clicked and index is " + this.props.colorIndex); //returns -1 
    this.setProps({colorIndex: this.props.colorIndex + 1}); 
    console.log("index is now " + this.props.colorIndex); /still returns -1 
}, 
+0

Если у вас есть переменная с изменениями значений, вы должны использовать объект 'setState' и' this.state' –

+0

, так как я не могу найти редактирование, которое я сделал. Это потому, что это асинхронная функция и просто не успела обновиться к моменту консолидации журнала? Просто мысль. – woodwick

+1

Почему вы используете устаревшие 'setProps' в первую очередь? Я даже не думаю, что это в реакторе. (Подтверждено, удалено в 0.14, https://github.com/facebook/react/pull/5570) В любом случае, я бы предположил, что, как и 'setState', это происходит не сразу. См. Также http://stackoverflow.com/a/25142742/438992. Более двух лет назад. –

ответ

1

Оба SetState и setProps не сразу мутировать - Из Реагирует документации:

https://facebook.github.io/react/docs/react-component.html#setstate

SetState() не сразу мутировать this.state но создает состояние ожидания переход. Доступ к this.state после вызова этого метода может потенциально вернуть существующее значение. Существует нет гарантия синхронной работы вызовов на setState, и вызовы могут быть отправлены на для повышения производительности.

Ваш метод обновления должен вызвать setState, и ваш метод визуализации будет выполняться на основе обновленного состояния.

+0

Спасибо за ссылку на конкретную документацию. – woodwick

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