Parece que componentWillReceivePropsserá 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.propse 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