Я прочитал документацию наactjs.org, касающуюся getDerivedStateFromProps.Я видел варианты использования.И я понимаю, зачем его использовать.
Но я не могу понять, как он работает с возвращаемым значением.Отсюда мой вопрос, когда он возвращается ... куда он идет?
Он не setState, потому что не имеет к нему доступа.
Для установки состояния требуетсяиспользование componentDidUpdate и поиск изменений, затем установка состояния.
Предположим, следующий код:
public static getDerivedStateFromProps: IArrowFunction = (nextProps: IMyContainerProps, prevState: IMyContainerState) => {
if (nextProps.havingFun !== prevState.havingFun) {
console.log('[MyContainer.tsx] getDerivedStateFromProps :::::CHANGED::::::', nextProps, prevState);
return { havingFun: nextProps.havingFun };
} else { return null; }
}
Так что же React делает с этим возвращением ^?
Тогда я мог быsetState для componentDidMount.Но это, похоже, не имеет ничего общего с getDerivedStateFromProps.Кроме того, этот метод жизненного цикла срабатывает каждый раз.И это вызывает повторный рендеринг.
public componentDidUpdate(prevProps: IMyContainerProps, prevState: IMyContainerState): void {
if (prevState.havingFun !== this.props.havingFun) {
console.log('[MyContainer.tsx] componentDidUpdate *******CHANGED******', prevState, prevProps, this.props);
this.setState({ havingFun: this.props.havingFun });
}
}
В какой момент вступает в игру возврат из getDerivedStateFromProps?
ОБНОВЛЕНО: этот метод жизненного цикла будетфактически обновить состояние, если правильно настроено, как указано выше.Вам не нужен дополнительный метод для setState