Saya memiliki efek sederhana:
@Effect()
simpleEffect = this.actions.pipe(
ofType<ActionA>('Action A'),
withLatestFrom(this.store.select(selectSomething)),
map(([action, something]) => console.log('CALLED TWICE'))
);
Ini pemilihnya:
export const selectSomething = createSelector(
(appState) => appState.someState,
(someState) => someState.something
)
Berikut ini adalah peredam sederhana yang memperbarui nilai something
:
export const someReducer = (state: SomeState = someInitialState, action: ActionB) => {
switch (action.type) {
case 'Action B':
return {
...state,
something: action.payload
};
default:
return state;
}
};
Masalah:
Saat saya mengirimkan ActionB, efek untuk ActionA dipanggil, meskipun sebenarnya tidak.
Seperti yang saya ketahui, ini terjadi karena efek withLatestFrom(this.store.select(selectSomething))
, yang mengamati setiap perubahan something
SELAMANYA.
Pertanyaan:
Apakah mungkin untuk berhenti berlangganan dari pemilih itu? Atau ada fungsi lain selain withLatestFrom
?