Задать вопрос
@timofeus91
Junior Frontend Developer

Как работает reducer React-Redux?

Добрый день! начал изучать Redux и тут возник вопрос - моё приложение написано с использованием React/ Redux . Есть кнопка по нажатию на которую выполняются определенные действия

const changeAmount = (top) => {
    dispatch({ type: DATA_FOR_REPOSTS_CHANGE_TOP, data: top });
    dispatch(getListReportsApiAction(isDataForReports));
  };


Первый диспатч перезаписывает часть данных в reducer , а второй вызывает action , который обращается как раз к тем данным что перезаписаны. Но он получает корректные данные только со 2 раза и так постоянно. При этом если второй диспатч вынести в useEffect и поставить зависимость по изменению данных ( которые в 1 диспатч меняются) , то работает все отлично.

useEffect(() => {
    dispatch(getListReportsApiAction(isDataForReports));
    console.log(isReports);
  }, [isDataForReports]);


Подскажите, пожалуйста, что посмотреть или как настроить функцию чтобы она получала обновленные данные без использования useEffect
  • Вопрос задан
  • 74 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
@wonderingpeanut
При вызове второго диспатча в стейте еще нет данных, которые ты отправил первым диспатчем

Решение - использовать thunk либо, как ты сделал, useEffect
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽