ReactJS - ¿Se llama a render en cualquier momento que se llame a "setState"?
¿React vuelve a renderizar todos los componentes y subcomponentes cada vez que se llama a setState
?
Si es así, ¿por qué? Pensé que la idea era que React solo rendía tan poco como fuera necesario-cuando el estado cambiaba.
En el siguiente ejemplo simple, ambas clases se renderizan de nuevo cuando se hace clic en el texto, a pesar del hecho de que el estado no cambia en los clics posteriores, ya que el controlador onClick siempre establece el state
con el mismo valor:
this.setState({'test':'me'});
Hubiera esperado que los renders solo sucede si state
los datos habían cambiado.
Aquí está el código del ejemplo, como un violín JS , y un fragmento incrustado:
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>
[1]: http://jsfiddle.net/fp2tncmb/2/
Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32
Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52