Action guard / middleware - Как проверить условия? - PullRequest
0 голосов
/ 14 марта 2020

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

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

Как должен выглядеть такой процесс?

У меня есть идея, но я не уверен, что хорошее решение:

  1. Component проверить условия,
  2. Component вызов @Dispatch function принадлежит Facade (крупная служба)
  3. @Dispatch function вызов Guard / Middleware,
  4. Guard / Middleware проверить условия еще раз (если условия не совпадают, выдает исключение)
  5. @Dispatch function вызывает действие
  6. ...

и если это хорошая идея ...

Как реализовать такую ​​охрану?

Это должно быть в форме службы или, возможно, функции стрелки, которые принимают store в параметре?

1 Ответ

1 голос
/ 14 марта 2020

На уровне компонентов, я полагаю, вы можете просто реализовать свой собственный фильтр, а если этот фильтр интенсивно используется, вы можете просто установить его как многоразовый конвейерный оператор

пример rx js filter

myCompFilter=pipe(filter(x=>x.....))

если вам нужен обычный фильтр, это просто обычная функция, возвращающая true или false

filter=(x)=>x>0?

Для защиты действий вы можете просто создать пользовательскую функцию отправки, заключив store.dispatch()

customDispatch=(action)=>if(x) store.dispatch()

, так что объединяя их вместе, вы получите что-то вроде

doSomething.pipe(myCompFilter,tap(()=>customDispatch())

Вы также можете сделать customDispatcher и фильтр более настраиваемыми, возвращая функцию более высокого порядка (вы также можете вызвать ее как частичную функцию)

...