Сетевое обновление магазина - PullRequest
0 голосов
/ 23 марта 2020

Я хотел бы отправить действие после того, как первое было обработано редукторами.

Вот мой вариант использования. Мой компонент позволяет пользователю выбирать список заметок (этот список хранится в редукции). Исходя из некоторых действий пользователя, в этом списке можно выбрать случайную заметку и сохранить ее в магазине.

enter image description here

На снимке экрана вы видите кнопки. «Выбрать все» и «Отменить выбор всех» действуют в списке возможных заметок. «Пуск» выберите заметку из списка.

У меня возникла проблема с «кнопкой сброса». Предполагается, что в цепочке «выбрать все» и «начать», и я не знаю, как это сделать. Я попытался наивно:

const reset = function () {
  dispatch(selectAll());
  dispatch(pickANote());
}

В этом примере я столкнулся с проблемой гонки данных. Второе действие - выбрать заметку из списка обновленных заметок.

Копая inte rnet, я обнаружил только случаи цепочки действий, основанные на вызовах API с избыточным thunk. У меня проблема в том, что я не знаю, как что-то инициировать при обработке действия (что очевидно при вызове API)

Итак, есть 3 решения:

  • Я упускаю что-то очевидное
  • Я иду туда, куда раньше ни один человек не шел
  • Я делаю что-то против паттерна

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 24 марта 2020

Хорошо, я нашел свой ответ.

Не удивительно, я думал против паттерна.

В руководстве по стилю редукса есть 2 очка, которые приводят Я к решению.

  1. Настоятельно рекомендуется отправить одно действие, которое обрабатывается несколькими редукторами.
  2. Настоятельно рекомендуется поместить логи c внутри редукторов.

Следствием этого является то, что я должен отправить «необработанные данные», а затем вычислить редукторы значений. Следуя этому пути, я не зависим от значений, уже находящихся в хранилище, для следующих обновлений, и поэтому я не сталкиваюсь ни с какой гонкой данных.

...