diff --git a/packages/core/src/bind/connectFactoryObservable.ts b/packages/core/src/bind/connectFactoryObservable.ts index 22328611..6553d12c 100644 --- a/packages/core/src/bind/connectFactoryObservable.ts +++ b/packages/core/src/bind/connectFactoryObservable.ts @@ -80,7 +80,7 @@ export default function connectFactoryObservable( return [ (...input: A) => { const [source$, getValue] = getSharedObservables$(input) - return useObservable(source$, getValue) + return useObservable(source$, getValue, input) }, (...input: A) => getSharedObservables$(input)[0], ] diff --git a/packages/core/src/bind/connectObservable.ts b/packages/core/src/bind/connectObservable.ts index 7a201565..4f711a55 100644 --- a/packages/core/src/bind/connectObservable.ts +++ b/packages/core/src/bind/connectObservable.ts @@ -18,9 +18,11 @@ import { useObservable } from "../internal/useObservable" * subscription, then the hook will leverage React Suspense while it's waiting * for the first value. */ +const emptyArr: Array = [] export default function connectObservable(observable: Observable) { const sharedObservable$ = shareLatest(observable, false) const getValue = reactEnhancer(sharedObservable$) - const useStaticObservable = () => useObservable(sharedObservable$, getValue) + const useStaticObservable = () => + useObservable(sharedObservable$, getValue, emptyArr) return [useStaticObservable, sharedObservable$] as const } diff --git a/packages/core/src/internal/useObservable.ts b/packages/core/src/internal/useObservable.ts index 50e66586..680cdd37 100644 --- a/packages/core/src/internal/useObservable.ts +++ b/packages/core/src/internal/useObservable.ts @@ -6,6 +6,7 @@ import { Observable } from "rxjs" export const useObservable = ( source$: Observable, getValue: () => O, + keys: Array, ): Exclude => { const [state, setState] = useState(getValue) const prevStateRef = useRef O)>(state) @@ -37,7 +38,7 @@ export const useObservable = ( t.unsubscribe() return () => subscription.unsubscribe() - }, [source$]) + }, keys) return state as Exclude }