#angular #redux #ngrx
#angular #сокращение #ngrx
Вопрос:
В моем приложении возникла ситуация, когда мне нужно обмениваться данными между редукторами.
State:
{
...
itemDetails,
settings
}
В itemDetails
хранилище мне нужно обновить некоторые данные, и для этого мне нужны некоторые данные из settings
хранилища.
(Я также использую фасады.)
Есть ли возможность обмениваться данными между редукторами, как redux-thunk
в react или что-то в этом роде?
У меня также есть два других варианта для этого:
- Отправьте эти данные настроек в метод фасада в качестве параметра функции.
- Вводите
settingsFacades
itemDetailsFacades
и отправляйте эти данные непосредственно в действие.
Но мне любопытно, есть ли более элегантный способ обмена данными между редукторами.
Ответ №1:
Обычно вы можете просто получить доступ к своему хранилищу, чтобы получить данные. Например, в эффекте это будет выглядеть так
constructor(private store$: Store<AppState>) {}
@Effect() specialEffect$ = this.actions$
.ofType(SOME_ACTION)
.withLatestFrom(this.store$)
.map(([action: Action, storeState: AppState]) => {
// Do something ... use selectors, dispatch action etc.
});
Комментарии:
1. О, извините. Я забыл упомянуть. Я использую только фасады и больше не использую эффекты (я возвращаю результат непосредственно в фасадах).
2. Эффект — это только один пример. Вы можете просто внедрить свое хранилище для доступа к нужным вам данным. Итак, в вашем фасаде введите свое хранилище, используйте селектор или с помощью latestfromoperator в observables и извлеките нужные вам данные