Files
wehub-resource-sync e30e75b5d4
Changesets / Create Version PR (push) Has been cancelled
Deploy Shadcn Registry / Deploy Production (push) Has been cancelled
Template Metrics / LOC + Bundle Size (push) Has been cancelled
Code Quality / Oxlint + Oxfmt (push) Has been cancelled
Code Quality / Template Sync (push) Has been cancelled
Code Quality / Build Changed Packages (push) Has been cancelled
Code Quality / Test Changed Packages (push) Has been cancelled
Deploy Expo Example / Deploy Production (push) Has been cancelled
Deploy Ink Example / Deploy Production (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.12) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.12) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:40:13 +08:00

25 lines
951 B
Plaintext

---
title: Hooks
description: Use React's hooks inside a resource, plus tap's additions.
---
Inside a resource you use React's hooks, imported from `"react"`: `useState`,
`useReducer`, `useEffect`, `useMemo`, `useCallback`, `useRef`, `useEffectEvent`,
and `use`. They behave as they do in a component and follow the same rules of
hooks, with a few [differences](/tap/docs/tap/differences-from-react).
## Composition hooks
Resources can host other resources. These hooks (from `@assistant-ui/tap`) manage
child lifecycles automatically:
- [`useResource`](/tap/docs/tap/composition#useresource) hosts a single child
- [`useResources`](/tap/docs/tap/composition#useresources) hosts a keyed list
- [`useTapRoot`](/tap/docs/tap/composition#usetaproot) exposes a child as a `{ getValue, subscribe }` boundary
<Cards>
<Card title="Resource Composition" href="/tap/docs/tap/composition">
Learn how to compose resources together.
</Card>
</Cards>