⚛️⏳ React Async for Client
Previously, async component
were only supported on the server (Next.js). With this package, you can now easily use it on the client side as well.
Install
npm i react-client-async
useAsync
Hook
You can use the useAsync
hook to create a task.
console.log(useAsync(fn, args, options));
Async
Component
You can use the Async
component to render an async component.
<Async
$fc={fc}
$waiting={waiting}
$fallback={fallback}
{...props}
/>
Demo
of Recursive Async Component
A component can be used with memo
and async
together!
const Rec: AsyncFC<{ n: number; }> = memo(
async ({ [$signal]: signal, n }) =>
n <= 0 ? (
<> {/* break the recursion */}
<div>0</div>
</>
) : (
<> {/* delay and recursion */}
{await delayWithSignal(99, signal)}
{n}<Async $fc={Rec} n={n - 1} />{n}
</>
),
);
What is Next?
- ⏳
useAsyncIterable
hook - ⏳
Iterable async
component
async function* IterableComponent() {
yield* OtherIterableComponent();
yield await component1();
yield await component2();
yield <div>...</div>;
}
Looking forward to your feedback or contribution! 🚀🚀🚀
Development
Install
- Install
bun
runtime: npm install -g bun
- Install dependencies:
bun install
Run & Build
- Run demo:
bun dev
- Build demo:
bun run build:app
- Build package:
bun run build:lib
Deploy
- Deploy demo to github pages:
bun run deploy
- Publish the package to npm:
bun publish