Я прохожу курс React JS на Edx. В ходе теста был запрошен вывод следующего кода. Я ответил 1. Но на самом деле ответ был 0. И он фактически отображает 0. Кто-нибудь может сказать почему?
var num = 0;
var element = <div> {num} </div>
ReactDOM.render(
element,
document.getElementById("root")
)
num++;
ReactDOM.render(
element,
document.getElementById("root")
)
num++;
Поскольку element
является экземпляром React.Element
. Элементы React обновляются только после обновления состояния с помощью setState()
или других состояний / свойств, изменяющих методы жизненного цикла. В вашем случае у element
нет причин для обновления - он ведет себя так, как будто была создана копия переменной num
, поэтому любые побочные изменения не повлияют на element
, а ReactDOM.render
всегда будет отображать element
с переданным начальным значением.
Надеюсь, я объяснил это понятно, и это вам поможет :)
больше похоже на конечную переменную в Java?