diff --git a/src/use-observable.ts b/src/use-observable.ts index 2507acd6..9d32d25a 100644 --- a/src/use-observable.ts +++ b/src/use-observable.ts @@ -10,11 +10,17 @@ export function useObservable(inputFactory: InputFactory, initialState: T) export function useObservable(inputFactory: InputFactory, initialState: T, inputs: U): T export function useObservable(inputFactory: InputFactory, initialState?: T, inputs?: U): T | null { - const stateSubject$ = new BehaviorSubject(initialState) - const inputSubject$ = new BehaviorSubject(inputs) const [state, setState] = useState(typeof initialState !== 'undefined' ? initialState : null) - const [state$] = useState(stateSubject$) - const [inputs$] = useState(inputSubject$) + + const { state$, inputs$ } = useMemo(() => { + const stateSubject$ = new BehaviorSubject(initialState) + const inputSubject$ = new BehaviorSubject(inputs) + + return { + state$: stateSubject$, + inputs$: inputSubject$, + } + }, []) useMemo(() => { inputs$.next(inputs)