Я хочу обновить свое локальное состояние, если реквизиты были изменены.Но я не смог найти подходящего решения этой проблемы.getDerivedStateFromProps
дает мне только nextProps и prevState, но мне нужны и prevProps, и nextProps.Пожалуйста, напишите любое ваше решение, которое может решить эту проблему)
Ситуация: Компонент Корзина (с состоянием) получает извлеченные данные из реквизита и помещает эти данные в this.state.cart
.Компонент Cart имеет метод counterHandler
, который срабатывает при каждом изменении счетчика (onIcrease, onDecrease, onChange).Этот обработчик вычисляет данные и создает новые данные на основе события (вычисление totalPrice и обновление суммы элемента).Затем помещает новые данные в setState
для обновления пользовательского интерфейса.Состояние не меняется, потому что я делаю это:
static getDerivedStateFromProps(nextProps, prevState) {
if (!_.isEqual(nextProps.cart, prevState.cart)) {
return { cart: nextProps.cart };
} else return null;
}
Я делаю это, потому что хочу обновить состояние, когда меняются реальные данные (данные, поступающие с реквизита).
Цель: обновление значения счетчика и общей цены без какого-либо побочного эффекта (значения могут быть обновлены в магазине или только для локального штата).
Вот что я имею в виду: