reaccionar métodos de ciclo de vida comprensión
Soy un novato en React.js y estoy tratando de comprender varios métodos en los métodos de reacción del ciclo de vida.
Hasta ahora, todavía tengo algo que me confunde:
1)
Hasta donde yo entiendo, la diferencia entrecomponentWillUpdate
ycomponentWillReceiveProps
es esocomponentWillReceiveProps
Se llamará cuando los padres cambien los accesorios y podamos usar setState (setState de este niño dentrocomponentWillReceiveProps
)
por ejemplo:https://github.com/bgerm/react-table-sorter-demo/blob/master/jsx/app.jsx
var App = React.createClass({
getInitialState: function() {
return {source: {limit: "200", source: "source1"}};
},
handleSourceChange: function(source) {
this.setState({source: source});
},
render: function() {
return (
<div>
<DataSourceSelectors onSourceChange={this.handleSourceChange} source={this.state.source} />
<TableSorter dataSource={urlForDataSource(this.state.source)} config={CONFIG} headerRepeat="5" />
</div>
);
}
});
En TableSorter, tenemos
componentWillReceiveProps: function(nextProps) {
// Load new data when the dataSource property changes.
if (nextProps.dataSource != this.props.dataSource) {
this.loadData(nextProps.dataSource);
}
}
es decir, cuando cambiamosthis.state.source
, esperaremoscomponentWillReceiveProps
ser llamado en TableSorter
Sin embargo, no entiendo bien cómo usarcomponentWillUpdate
en este caso, la definición decomponentWillUpdate
es
componentWillUpdate(object nextProps, object nextState)
¿Cómo podemos pasar nextState de padres a hijos? O tal vez estoy equivocado, ¿se pasa el nextState del elemento padre?
2) métodocomponentWillMount
me confunde porque en el documento oficial dice que
Se invoca una vez, tanto en el cliente como en el servidor, inmediatamente antes de que se produzca el renderizado inicial.
En este caso, si uso setState en este método, anulará getInitialState ya que solo se llamará una vez en inicial. En este caso, cuál es la razón para establecer los parámetros en el método getInitialState. En este caso particular, tenemos
getInitialState: function() {
return {
items: this.props.initialItems || [],
sort: this.props.config.sort || { column: "", order: "" },
columns: this.props.config.columns
};
},
componentWillMount: function() {
this.loadData(this.props.dataSource);
},
loadData: function(dataSource) {
if (!dataSource) return;
$.get(dataSource).done(function(data) {
console.log("Received data");
this.setState({items: data});
}.bind(this)).fail(function(error, a, b) {
console.log("Error loading JSON");
});
},
los artículos se anularán inicialmente y por qué todavía necesitamositems: this.props.initialItems || []
int el método getInitialState?
Espero que puedas entender mi explicación, y por favor dame algunas pistas si tienes alguna. Muchas gracias por eso :)