deno.land / x / jotai@v1.8.4 / src / immer / useImmerAtom.ts

useImmerAtom.ts
نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { useCallback } from 'react'import { produce } from 'immer'import type { Draft } from 'immer'import { useAtom } from 'jotai'import type { WritableAtom } from 'jotai'
type Scope = NonNullable<Parameters<typeof useAtom>[1]>
export function useImmerAtom<Value, Result extends void | Promise<void>>( anAtom: WritableAtom<Value, (draft: Draft<Value>) => void, Result>, scope?: Scope): [Value, (fn: (draft: Draft<Value>) => void) => Result]
export function useImmerAtom<Value, Result extends void | Promise<void>>( anAtom: WritableAtom<Value, (value: Value) => Value, Result>, scope?: Scope): [Value, (fn: (draft: Draft<Value>) => void) => Result]
export function useImmerAtom<Value, Result extends void | Promise<void>>( anAtom: WritableAtom<Value, (value: Value) => Value, Result>, scope?: Scope) { const [state, setState] = useAtom(anAtom, scope) const setStateWithImmer = useCallback( (fn: (draft: Draft<Value>) => void) => setState(produce(fn)), [setState] ) return [state, setStateWithImmer]}
jotai

Version Info

Tagged at
2 years ago