From 6e6c9eba2da792f078aeeff335065e5d4d0c078b Mon Sep 17 00:00:00 2001 From: ezksd Date: Sat, 18 Jul 2020 00:25:51 +0800 Subject: [PATCH] Fix: race condition on useRecoilObjectWithImmer (#45) --- src/lib/recoil.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/recoil.ts b/src/lib/recoil.ts index 709408d..87a3beb 100644 --- a/src/lib/recoil.ts +++ b/src/lib/recoil.ts @@ -10,16 +10,16 @@ export function useRecoilObjectWithImmer (value: RecoilState) { function set> (f: (draft: Draft) => void | T): void function set> (data: any, value?: Draft[K]): void { if (typeof data === 'string') { - rawSet(produce(copy, (draft: Draft) => { + rawSet(pre => produce(pre, (draft: Draft) => { const key = data as K const v = value draft[key] = v })) } else if (typeof data === 'function') { const fn = data as (draft: Draft) => void | T - rawSet(produce(copy, fn) as T) + rawSet(pre => produce(pre, fn) as T) } else if (typeof data === 'object') { - rawSet(produce(copy, (draft: Draft) => { + rawSet(pre => produce(pre, (draft: Draft) => { const obj = data as Draft for (const key of Object.keys(obj)) { const k = key as keyof Draft