Parece componentWillReceiveProps
que se eliminará por completo en las próximas versiones, a favor de un nuevo método de ciclo de vida getDerivedStateFromProps
: static getDerivedStateFromProps () .
Tras la inspección, parece que ahora no puede hacer una comparación directa entre this.props
y nextProps
, como puede hacerlo componentWillReceiveProps
. ¿Hay alguna forma de evitar esto?
Además, ahora devuelve un objeto. ¿Estoy en lo cierto al suponer que el valor de retorno es esencialmente this.setState
?
A continuación se muestra un ejemplo que encontré en línea: Estado derivado de accesorios / estado .
antes de
class ExampleComponent extends React.Component {
state = {
derivedData: computeDerivedState(this.props)
};
componentWillReceiveProps(nextProps) {
if (this.props.someValue !== nextProps.someValue) {
this.setState({
derivedData: computeDerivedState(nextProps)
});
}
}
}
Después
class ExampleComponent extends React.Component {
// Initialize state in constructor,
// Or with a property initializer.
state = {};
static getDerivedStateFromProps(nextProps, prevState) {
if (prevState.someMirroredValue !== nextProps.someValue) {
return {
derivedData: computeDerivedState(nextProps),
someMirroredValue: nextProps.someValue
};
}
// Return null to indicate no change to state.
return null;
}
}
componentWillReceiveProps