Skip to main content
Version: v1.x.x

useMethod

Useful for async services, it returns the state of the promise and executes automatically when the component where it is encapsulated first renders

It is similar to the react-query and apollo-graphql hooks behavior but since the complete async logic will be encapsulated in one service method, no need to listen in a useEffect or a useMemo a query to finish, the useMethod just wraps a complete use case and generates the data useful for the UI (in most of the cases no need to store a isLoading boolean in the store)

export const ShoesComponent = () => {
const shoesService = useService('shoes')
const {
isLoading,
isError,
isSuccess,
isCalled,
error,
call,
data,
} = useMethod(shoesService.load)

if (!isCalled || !isLoading) {
return <Loader>
}

if (isError) {
return <span>An error occured</span>
}

return <Shoes data={data}>
}

It can also be used in one line by using the method string

export const ShoesComponent = () => {
const {
isLoading,
isError,
isSuccess,
isCalled,
error,
call,
data,
} = useMethod('shoes.load')

...
}