Skip to content

Commit c787d34

Browse files
committed
fix: mv subject creation into memo to avoid multiple creation.
1 parent da9de05 commit c787d34

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/use-observable.ts

+10-4
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ export function useObservable<T>(inputFactory: InputFactory<T>, initialState: T)
1010
export function useObservable<T, U>(inputFactory: InputFactory<T, U>, initialState: T, inputs: U): T
1111

1212
export function useObservable<T, U>(inputFactory: InputFactory<T, U>, initialState?: T, inputs?: U): T | null {
13-
const stateSubject$ = new BehaviorSubject<T | undefined>(initialState)
14-
const inputSubject$ = new BehaviorSubject<U | undefined>(inputs)
1513
const [state, setState] = useState(typeof initialState !== 'undefined' ? initialState : null)
16-
const [state$] = useState(stateSubject$)
17-
const [inputs$] = useState(inputSubject$)
14+
15+
const { state$, inputs$ } = useMemo(() => {
16+
const stateSubject$ = new BehaviorSubject<T | undefined>(initialState)
17+
const inputSubject$ = new BehaviorSubject<U | undefined>(inputs)
18+
19+
return {
20+
state$: stateSubject$,
21+
inputs$: inputSubject$,
22+
}
23+
}, [])
1824

1925
useMemo(() => {
2026
inputs$.next(inputs)

0 commit comments

Comments
 (0)