From c787d3477d548331ea89fd61a2278f441ca01937 Mon Sep 17 00:00:00 2001 From: Morlay Date: Tue, 27 Nov 2018 14:06:21 +0800 Subject: [PATCH] fix: mv subject creation into memo to avoid multiple creation. --- src/use-observable.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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)