Size: a a a

2017 May 24

NK

ID:254589681 in React Kyiv
ну сразу в екшене после того как вернулся первый запрос делаешь диспатч ответа и делаешь второй запрос
источник

RL

Roman Liutikov in React Kyiv
Alex Maslakov
Да, например после успешного сохранения юзера нужно обновить список пользователей. Это два готовых экшена, второй должен запуститься после первого
Обычно такие штуки решаються одним экшеном
источник

RL

Roman Liutikov in React Kyiv
Смотри. У тебя есть мидлвар для HTTP запросов и экшены, с которыми он работает, так?
источник

AM

Alex Maslakov in React Kyiv
Ты имеешь ввиду слой который делает http?
источник

RL

Roman Liutikov in React Kyiv
Да. Redux middleware
источник

AM

Alex Maslakov in React Kyiv
Roman Liutikov
Смотри. У тебя есть мидлвар для HTTP запросов и экшены, с которыми он работает, так?
Такой есть
источник

AM

Alex Maslakov in React Kyiv
Roman Liutikov
Да. Redux middleware
Допустим я хочу обобщить, не замыкаясь на редуксе
источник

RL

Roman Liutikov in React Kyiv
Обобщаю
источник

RL

Roman Liutikov in React Kyiv
В любой системе с побочными эффектами (http и др.) есть прослойка, которая выполняет эти эффекты
источник

RL

Roman Liutikov in React Kyiv
В Redux это middleware
источник

AM

Alex Maslakov in React Kyiv
Хорошо
источник

RL

Roman Liutikov in React Kyiv
Вот. То есть тебе нужно в одном экшена описать цепочку запросов. И мидлвар должен уметь выполнять эту цепочку.
источник

RL

Roman Liutikov in React Kyiv
Другими словами должен быть установлен формат структуры экшена, который понимает мидлвар.
источник

RL

Roman Liutikov in React Kyiv
Выходит небольшой DSL
источник

NK

ID:254589681 in React Kyiv
я бы делал так
export const someAction = () => {
   return (dispatch, getState) => {
       return api.post('first.request').then(firstResponse => {
           dispatch({
               type: 'FIRST_RESPONSE_SUCCESS',
               payload: firstResponse
           });

           api.post('second.request').then(secondResponse => {
               dispatch({
                   type: 'SECOND_RESPONSE_SUCCESS',
                   payload: secondResponse
               });
           })
       })
   }
}
источник

AM

Alex Maslakov in React Kyiv
Ага, то есть ты имеешь ввиду чтобы вынести зависимую друг от друга асинхронщину в отдельный слой, а в диспетчер писать результат последнего?
источник

AM

Alex Maslakov in React Kyiv
Результат последнего успешного или ошибку?
источник

RL

Roman Liutikov in React Kyiv
Давай напишу пример экшена
источник

AM

Alex Maslakov in React Kyiv
Давай
источник

RL

Roman Liutikov in React Kyiv
Через 10 минут, я обедаю :)
источник