@ ngrx / действие по отправке эффектов снова - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в ngrx / store и эффектах, поэтому до сих пор не понимаю последовательность отправленных действий:

  1. actions -> effect -> reducer -> store
  2. действия -> редуктор -> эффект -> редуктор -> магазин

моя проблема в том, что я звоню store.select() Я обнаружил, что действие отправляется два раза, и это то, что я сделал для теста :

Функция редуктора

switch (action.type) { 
  ...
  default: { 
    console.log('In reducer function'); 
    return state; 
  }
}

Конструктор класса эффектов

constructor( private action$: Actions ) { 
  console.log('in effect constructor'); 
}

и вот что я получаю в консоли

In reducer function
in effect constructor
In reducer function

1 Ответ

0 голосов
/ 28 апреля 2020

попробуйте войти в редуктор не только сообщением, но и action.type, тогда вы увидите, что у него есть 2 различных действия: store init и effects init.

Когда вы отправляете action, оно идет сначала к effects, затем к reducer и reducer может обновить связанный state.

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

...