Реагирует ли повторно все компоненты и подкомпоненты каждый раз при вызове setState
?
Если да, то почему? Я думал, что идея заключалась в том, что "Реакт" предоставлялся как можно меньше - когда государство изменилось.
В следующем простом примере оба класса визуализируются снова, когда нажимается текст, несмотря на то, что состояние не изменяется при последующих кликах, поскольку обработчик onClick всегда устанавливает state
в одно и то же значение:
this.setState({'test':'me'});
Я бы ожидал, что рендеринг произошел бы только в том случае, если были изменены данные state
.
Здесь приведен код примера как скрипт JS и встроенный фрагмент:
var TimeInChild = React.createClass({
render: function() {
var t = new Date().getTime();
return (
<p>Time in child:{t}</p>
);
}
});
var Main = React.createClass({
onTest: function() {
this.setState({'test':'me'});
},
render: function() {
var currentTime = new Date().getTime();
return (
<div onClick={this.onTest}>
<p>Time in main:{currentTime}</p>
<p>Click me to update time</p>
<TimeInChild/>
</div>
);
}
});
ReactDOM.render(<Main/>, document.body);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>