useController()
Controller provides type-safe methods to access and dispatch actions to the store.
For instance fetch, invalidate, and setResponse
import { useController } from '@data-client/react';
function MyComponent({ id }) {
const ctrl = useController();
const handleRefresh = useCallback(
async e => {
await ctrl.fetch(MyResource.get, { id });
},
[fetch, id],
);
const handleSuspend = useCallback(
async e => {
await ctrl.invalidate(MyResource.get, { id });
},
[invalidate, id],
);
const handleLogout = useCallback(
async e => {
ctrl.resetEntireStore();
},
[resetEntireStore],
);
}
Examples
Using the resolution
controller.fetch()
matches the return type useSuspense() - utilizing the Endpoint.schema
when possible. This allows us to use any class members.
import { useController } from '@data-client/react';
const post = await controller.fetch(PostResource.getList.push, createPayload);
post.title;
post.computedField
post.pk();