Returns the data from a route loader. The loader must be defined in the same file as the component using it.
import { useLoader } from 'one'
export function loader() {
return { hello: 'world' }
}
export default function Page() {
const data = useLoader(loader)
return (
<>{data.hello}</>
)
}
Loaders automatically refetch when:
/home → /about)/user/1 → /user/2)/search?q=hello → /search?q=world)Use useLoader when:
For more advanced use cases like manual refetching, loading states, or accessing refetch from child components, see useLoaderState.
The hook is fully typed based on your loader's return type:
export function loader() {
return {
user: { id: 1, name: 'John' },
posts: [] as Post[]
}
}
export default function Page() {
const data = useLoader(loader)
// TypeScript knows: data.user.name is string
// TypeScript knows: data.posts is Post[]
}
Edit this page on GitHub.