use-next-tick 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +3 -3
- package/dist/react-native.d.ts +2 -1
- package/dist/react-native.js +2 -2
- package/dist/react-native.js.map +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,13 +16,16 @@ npm install use-next-tick
|
|
|
16
16
|
|
|
17
17
|
```tsx
|
|
18
18
|
"use client";
|
|
19
|
-
import { useState, useRef } from "react";
|
|
20
|
-
import useNextTick from "use-next-tick";
|
|
19
|
+
import { useState, useRef, useLayoutEffect } from "react";
|
|
20
|
+
import useNextTick, {useNextTickLayout} from "use-next-tick";
|
|
21
21
|
|
|
22
22
|
function MyComponent() {
|
|
23
23
|
const [count, setCount] = useState(0);
|
|
24
24
|
const ref = useRef<HTMLSpanElement>(null);
|
|
25
25
|
const nextTick = useNextTick();
|
|
26
|
+
/*
|
|
27
|
+
const nextTick = useNextTickLayout(); // if you need `useLayoutEffect` instead off `useEffect`
|
|
28
|
+
*/
|
|
26
29
|
|
|
27
30
|
const handleClick = () => {
|
|
28
31
|
setCount((c) => c + 1);
|
|
@@ -94,7 +97,7 @@ bun install && bun run build
|
|
|
94
97
|
## TypeScript
|
|
95
98
|
|
|
96
99
|
```ts
|
|
97
|
-
function useNextTick(): (cb:
|
|
100
|
+
export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
|
|
98
101
|
```
|
|
99
102
|
|
|
100
103
|
Fully typed. Callbacks can be sync or async:
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
import { useLayoutEffect, useEffect } from "react";
|
|
1
2
|
export type NextTickCallback = () => void | Promise<void>;
|
|
2
|
-
export default function useNextTick(): (cb: NextTickCallback) => void;
|
|
3
|
+
export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
|
|
4
|
+
export declare function useNextTickLayout(): (cb: NextTickCallback) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useRef as r,useCallback as f,useLayoutEffect as a,useEffect as i}from"react";function u(n=i){let e=r([]),t=r(!1);return n(()=>{if(!t.current)return;t.current=!1;let c=e.current;e.current=[];for(let o of c)o()}),f((c)=>{e.current.push(c),t.current=!0},[])}function k(){return u(a)}export{k as useNextTickLayout,u as default};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=522FAD13C6AB3C0264756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {
|
|
5
|
+
"import { useRef, useCallback, useLayoutEffect, useEffect } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(\n useEffectHook: typeof useEffect | typeof useLayoutEffect = useEffect\n): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffectHook(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n for (const cb of pending) {\n cb();\n }\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n\nexport function useNextTickLayout() {\n return useNextTick(useLayoutEffect);\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "AAAA,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAAA,iBAAS,iBAAQ,qBAAa,eAAiB,cAI/C,SAAwB,CAAW,CACjC,EAA2D,EAC3B,CAChC,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAkB/B,OAhBA,EAAc,IAAM,CAClB,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,QAAW,KAAM,EACf,EAAG,EAEN,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC,EAKA,SAAS,CAAiB,EAAG,CAClC,OAAO,EAAY,CAAe",
|
|
8
|
+
"debugId": "522FAD13C6AB3C0264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/react-native.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import { useEffect, useLayoutEffect } from "react";
|
|
1
2
|
export type NextTickCallback = () => void | Promise<void>;
|
|
2
|
-
export default function useNextTick(): (cb: NextTickCallback) => void;
|
|
3
|
+
export default function useNextTick(useEffectHook?: typeof useEffect | typeof useLayoutEffect): (cb: NextTickCallback) => void;
|
package/dist/react-native.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{useEffect as
|
|
1
|
+
import{useEffect as n,useRef as r,useCallback as o}from"react";function s(u=n){let e=r([]),t=r(!1);return u(()=>{if(!t.current)return;t.current=!1;let c=e.current;e.current=[],setTimeout(()=>{for(let f of c)f()},0)}),o((c)=>{e.current.push(c),t.current=!0},[])}export{s as default};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=0A16B9BA1C04CDB964756E2164756E21
|
|
4
4
|
//# sourceMappingURL=react-native.js.map
|
package/dist/react-native.js.map
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/react-native.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { useEffect, useRef, useCallback } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n
|
|
5
|
+
"import { useEffect, useLayoutEffect, useRef, useCallback } from \"react\";\n\nexport type NextTickCallback = () => void | Promise<void>;\n\nexport default function useNextTick(\n useEffectHook: typeof useEffect | typeof useLayoutEffect = useEffect\n): (cb: NextTickCallback) => void {\n const callbacksRef = useRef<NextTickCallback[]>([]);\n const pendingRef = useRef(false);\n\n useEffectHook(() => {\n if (!pendingRef.current) return;\n\n pendingRef.current = false;\n const pending = callbacksRef.current;\n callbacksRef.current = [];\n setTimeout(() => {\n for (const cb of pending) {\n cb();\n }\n }, 0);\n });\n\n const nextTick = useCallback((cb: NextTickCallback) => {\n callbacksRef.current.push(cb);\n pendingRef.current = true;\n }, []);\n\n return nextTick;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "AAAA,oBAAS,
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "AAAA,oBAAS,YAA4B,iBAAQ,cAI7C,SAAwB,CAAW,CACjC,EAA2D,EAC3B,CAChC,IAAM,EAAe,EAA2B,CAAC,CAAC,EAC5C,EAAa,EAAO,EAAK,EAoB/B,OAlBA,EAAc,IAAM,CAClB,GAAI,CAAC,EAAW,QAAS,OAEzB,EAAW,QAAU,GACrB,IAAM,EAAU,EAAa,QAC7B,EAAa,QAAU,CAAC,EACxB,WAAW,IAAM,CACf,QAAW,KAAM,EACf,EAAG,GAEJ,CAAC,EACL,EAEgB,EAAY,CAAC,IAAyB,CACrD,EAAa,QAAQ,KAAK,CAAE,EAC5B,EAAW,QAAU,IACpB,CAAC,CAAC",
|
|
8
|
+
"debugId": "0A16B9BA1C04CDB964756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "use-next-tick",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.3",
|
|
4
4
|
"description": "A React hook for running callbacks after the DOM or native views have updated.",
|
|
5
5
|
"repository": "suhaotian/use-next-tick",
|
|
6
6
|
"bugs": "https://github.com/suhaotian/use-next-tick/issues",
|