Как я могу вызвать массив действий в RxJS? - PullRequest
0 голосов
/ 07 января 2019

У меня есть ряд действий по сбросу, которые мне нужно запустить одновременно. В настоящее время я использую mergeMap для вызова типов действий, как показано ниже. Тем не менее, я думаю, что есть способ заменить объекты типа массивом строк, но я не могу понять это. Кто-нибудь может помочь?

const resetModuleEpic = action$ =>
  action$.pipe(
    ofType('RESET_MODULE'),
    mergeMap(() =>
      of(
        {
          type: 'RESET_IMAGE'
        },
        {
          type: 'RESET_CATEGORY'
        },
        {
          type: 'RESET_FILTERS'
        }
      )
    )
  );

Я верю, что что-то вроде ниже возможно, но не могу понять это правильно:

const resetModuleEpic = action$ =>
  action$.pipe(
    ofType('RESET_MODULE'),
    merge(['RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS'])
  );

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Ваш пример должен работать, возможно, ошибка в другом месте вашего кода.

Я добавил пример на стеке . Я лично предпочитаю from более of, но не могу этого объяснить.

0 голосов
/ 07 января 2019

То, что у вас есть с merge, будет просто брать каждый элемент в массиве и переизлучать его, чтобы оно выводило только чистые строки вместо действий.

Очевидно, что вы можете достичь того, чего хотите, несколькими способами. Например, вы можете использовать комбинацию of().map() и превратить каждую строку в действие:

mergeMap(() => of('RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS').pipe(
  map(type => ({ type })),
))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...