diff --git a/.parcel-cache/2ecb2ae785209a77 b/.parcel-cache/2ecb2ae785209a77 new file mode 100644 index 0000000..b344157 Binary files /dev/null and b/.parcel-cache/2ecb2ae785209a77 differ diff --git a/.parcel-cache/599de3244968e517 b/.parcel-cache/599de3244968e517 new file mode 100644 index 0000000..66c032c Binary files /dev/null and b/.parcel-cache/599de3244968e517 differ diff --git a/.parcel-cache/5ab0f72e1c03aae5.txt b/.parcel-cache/5ab0f72e1c03aae5.txt new file mode 100644 index 0000000..fa6fa76 --- /dev/null +++ b/.parcel-cache/5ab0f72e1c03aae5.txt @@ -0,0 +1,2 @@ +62893699 +1697783164607299000 \ No newline at end of file diff --git a/.parcel-cache/a9f5484dda8bfe2c b/.parcel-cache/a9f5484dda8bfe2c new file mode 100644 index 0000000..57bfeb9 Binary files /dev/null and b/.parcel-cache/a9f5484dda8bfe2c differ diff --git a/.parcel-cache/c18ce38693a82912 b/.parcel-cache/c18ce38693a82912 new file mode 100644 index 0000000..bef6765 Binary files /dev/null and b/.parcel-cache/c18ce38693a82912 differ diff --git a/.parcel-cache/data.mdb b/.parcel-cache/data.mdb new file mode 100644 index 0000000..ebd1b3d Binary files /dev/null and b/.parcel-cache/data.mdb differ diff --git a/.parcel-cache/lock.mdb b/.parcel-cache/lock.mdb new file mode 100644 index 0000000..55ee70f Binary files /dev/null and b/.parcel-cache/lock.mdb differ diff --git a/example/index.html b/example/index.html index 547e2e0..3c6f91f 100644 --- a/example/index.html +++ b/example/index.html @@ -9,6 +9,6 @@
- + diff --git a/example/index.tsx b/example/index.tsx index e6f54a2..810080b 100644 --- a/example/index.tsx +++ b/example/index.tsx @@ -11,12 +11,16 @@ const Count = () => { const App = () => { const [visible, setVisible] = React.useState(false); + const [destroy, setDestroy] = React.useState(false); return (
- - - - + + + {!destroy && ( + + + + )}
); }; diff --git a/package.json b/package.json index 03e9b91..e4cada2 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/src/Repeater.tsx b/src/Repeater.tsx index 0d946b4..d5101d6 100644 --- a/src/Repeater.tsx +++ b/src/Repeater.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from 'react'; +import React, { useRef, useEffect } from 'react'; import type { FC, ReactNode } from 'react'; export const Repeater: FC<{ @@ -9,11 +9,16 @@ export const Repeater: FC<{ const { mode, children } = props; // refs const resolveRef = useRef<() => void>(); - // destroy promise - if (resolveRef.current) { - resolveRef.current(); - resolveRef.current = void 0; + // methods + const resolvePromise = () => { + if (typeof resolveRef.current === 'function') { + resolveRef.current(); + resolveRef.current = void 0; + } } + resolvePromise(); + // effect + useEffect(() => resolvePromise, []); if (mode === 'hidden') { throw new Promise((resolve) => (resolveRef.current = resolve)); }