From ae2c6451097270e5ee8ee70efe375a9e12fb7916 Mon Sep 17 00:00:00 2001 From: Josep M Sobrepere Date: Wed, 11 Nov 2020 11:16:57 +0100 Subject: [PATCH] chore(core/useObservable): improve implementation --- packages/core/src/internal/useObservable.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/core/src/internal/useObservable.ts b/packages/core/src/internal/useObservable.ts index 6258613..70c6389 100644 --- a/packages/core/src/internal/useObservable.ts +++ b/packages/core/src/internal/useObservable.ts @@ -34,24 +34,18 @@ export const useObservable = ( }, onError) if (err !== EMPTY_VALUE) return - const set = (value: O | (() => O)) => { + const set = (value: O) => { if (!Object.is(prevStateRef.current, value)) { - prevStateRef.current = value - if (typeof value === "function") { - setState(() => [(value as any)(), source$]) - } else { - setState([value, source$]) - } + setState([(prevStateRef.current = value), source$]) } } - if (syncVal === EMPTY_VALUE) { - set(defaultValue) - } + if (syncVal === EMPTY_VALUE) set(defaultValue) const t = subscription subscription = source$.subscribe((value: O | typeof SUSPENSE) => { - set(value === SUSPENSE ? gV : value) + if (value !== SUSPENSE) set(value) + else setState(gV as any) }, onError) t.unsubscribe()