Когда вы обновляете состояние, вы запускаете повторный рендеринг, но перед следующим рендерингом response вызывает getDerivedStateFromProps
, который вы здесь проверяете, чтобы увидеть, отличаются ли значения:
static getDerivedStateFromProps(props, state) {
if (props.export.expires !== state.expires) {
return {
expires: props.export.expires
};
}
return null;
}
Какие они есть, поскольку вы только что обновили state
, но props
остался прежним. И затем вы снова обновляете состояние, но теперь вы устанавливаете его обратно на любое значение в реквизитах.
Из DOCS :
getDerivedStateFromProps вызывается правильно перед вызовом метода рендеринга, как при первоначальном монтировании, так и при последующих обновлениях.
Я не уверен, почему вы пытаетесь синхронизировать c реквизиты и состояния, но обычно это указывает на плохой дизайн вашего приложения.
Как уже упоминалось в комментариях, не используйте переменную с именем export
в качестве зарезервированного слова начиная с ES2015.
Вы можете получить ошибку:
Неожиданное ключевое слово "экспорт"