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
. Вероятно, я делаю что-то не так.