Parece que componentWillReceiveProps
será completamente eliminado nas próximas versões, em favor de um novo método de ciclo de vida getDerivedStateFromProps
: static getDerivedStateFromProps () .
Após a inspeção, parece que agora você não consegue fazer uma comparação direta entre this.props
e nextProps
, como pode componentWillReceiveProps
. Existe alguma maneira de contornar isso?
Além disso, agora ele retorna um objeto. Estou correto ao assumir que o valor de retorno é essencialmente this.setState
?
Abaixo está um exemplo que encontrei on-line: Estado derivado de adereços / estado .
Antes
class ExampleComponent extends React.Component {
state = {
derivedData: computeDerivedState(this.props)
};
componentWillReceiveProps(nextProps) {
if (this.props.someValue !== nextProps.someValue) {
this.setState({
derivedData: computeDerivedState(nextProps)
});
}
}
}
Depois de
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