React представил новый статический метод getDerivedStateFromProps(props, state), который вызывается перед каждым методом рендеринга, но почему? Позвонить ему после смены опоры имеет смысл для меня, но после setState это не так, может быть, я что-то упустил.
Я создавал компонент datePicker в соответствии с требованиями моей компании, в компоненте дата контролируется с опоры. У меня есть следующее состояние в компоненте.
selectedDate: number;
selectedMonth: number;
selectedYear: number;
currentMonth: number;
currentYear: number;
view: string;
selected представляет выбранную дату, которая получена из подпорки даты, а currentMonth и currentYear представляют месяц и год в текущем представлении календаря.
Если date из пропеллера изменяет selected*, currentMonth и currentYear должны быть изменены соответственно. Для этого я использую getDerivedStateFromProps, но, скажем, пользователь нажимает на название месяца, которое переключит представление календаря на месяц (вместо того, чтобы будет отображаться название месяца), функция обновляет currentMonth для этого с помощью setState, но date: реквизит тот же, что и раньше (содержащий предыдущий месяц), который должен, но вызывается getDerivedStateFromProps и currentMonth снова такой же, как и раньше, вместо изменения.
Хорошо, я создал дополнительную переменную в state, чтобы отслеживать, вызван ли getDerivedStateFromProps из-за setState, но я не думаю, что это правильный путь.
Либо я делаю что-то не так, либо что-то пропускаю, либо getDerivedStateFromProps не следует вызывать после setState. Вероятно, я делаю что-то не так.

