Declarative React components for managing async query states.
npm install @zhaoworks/query-state###### — @zhaoworks/query-state
Declarative React components for managing async query states.
#### Installation
``apache `
λ bun add @zhaoworks/query-state
#### Usage
`tsx
import QueryState, { useQueryState } from '@zhaoworks/query-state';
// → Basic usage with QueryState (default export)
function UserProfile({ userId }) {
const [data, setData] = useState(null);
const [error, setError] = useState(null);
const [status, setStatus] = useState('loading');
useEffect(() => {
fetchUser(userId).then(
user => (setData(user), setStatus('success')),
err => (setError(err), setStatus('error'))
)
}, [userId]);
return (
Loading user...
Hello, {user.name}!
}
Failed to load: {error.message}}
No user found
);
}
// → Use useQueryState for a type-safe alternative to QueryState
function UserProfileTyped({ userId }) {
const query = useAsyncQuery(() => fetchUser(userId), [userId]);
const Query = useQueryState
return (
Loading user...
Hello, {user.name}!
}
Failed: {error.message}}
);
}
`
#### API
Components
- Root — Provides query context with optional loading delayPending
- — Shows content while loading Success
- — Shows content when query succeedsError
- — Shows content when query failsResult
- — Handles both success and error statesEmpty
- — Shows content when data is empty
Hooks
- useQueryState(query) — Creates type-safe components (recommended)useQueryInfo()
- — Access query context data
Types
- QueryStatus — 'loading' | 'success' | 'error'QueryInfo
-