Лучший способ обновить еще один магазин Redux с помощью функции Redux-Saga - PullRequest
0 голосов
/ 09 мая 2018

У меня есть приложение React / Redux, и я решил разделить состояние Redux на 2 основных раздела: реклама и задачи, и я использую комбинироватьReducers.

Объявления создаются в первую очередь. Одно объявление или набор объявлений можно сгруппировать и назначить для новой задачи.

В моем рекламном магазине есть редукторы и саги, которые выполняют вызовы API, связанные с рекламой, и обновляют состояние Redux для рекламы.

В моем хранилище задач есть редукторы и саги, которые делают вызовы API, относящиеся к задачам, и обновляют состояние Redux для задач.

Когда задача создается из коллекции объявлений, мне нужно обновить состояние Ads Redux. Первоначально я только что отправил своего создателя рекламных действий, который делает вызов API и получает обновленный список всех объявлений. К сожалению, этот вызов API является очень сложным запросом и в результате довольно трудоемким.

Когда я выполняю вызов API для создания задачи, я получаю обратно некоторые данные, которые я могу использовать для обновления состояния Redux объявлений, избегая необходимости выполнять этот медленный вызов API.

Поскольку для создания задачи могут использоваться несколько объявлений, мои идентификаторы хранятся в массиве.

Я пытаюсь выяснить, как я могу пройти через этот массив и отправить редуктор в магазин рекламы Redux, чтобы обновить состояние с этими данными.

Одна проблема, с которой я столкнулся, - это ошибка, указывающая на то, что yield не может быть вызван из цикла forEach, который я использовал для перебора массива идентификаторов объявлений.

Другая проблема заключается в поиске лучшего способа обновления состояния из одного хранилища Redux в другом.

Полагаю, я мог бы просто объединить все в одном хранилище Redux, но этот файл был бы бесконечно длинным.

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

1 Ответ

0 голосов
/ 09 мая 2018

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

Это сработало:

yield myArray.map((item: string) => 
    put(OtherReduxStoreActions.myActionCreatorFunction(item))
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...