-
I want to use useSubscription(storeAction$, () => console.log(`${new Date().toISOString()} not delayed`));
useSubscription(storeAction$.pipe(delay(3000)), () => console.log(`${new Date().toISOString()} delayed`));
const delayedAction$ = useObservable(() => storeAction$.pipe(delay(3000)));
useSubscription(delayedAction$, () => console.log(`${new Date().toISOString()} delayed 2`));
useSubscription(delayedAction$.pipe(delay(1)), () => console.log(`${new Date().toISOString()} delayed 3`)); Note
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
See https://observable-hooks.js.org/guide/gotchas.html#epic-closure . You need to place the const delay$ = useObservable(() => storeAction$.pipe(delay(3000));
useSubscription(delay$, () => console.log(`${new Date().toISOString()} delayed`)); |
Beta Was this translation helpful? Give feedback.
See https://observable-hooks.js.org/guide/gotchas.html#epic-closure .
You need to place the
pipe
operation inside the callback function to ensure that a new Observable is not created repeatedly on every render. This is a somewhat counterintuitive design in React.