0.2.2 • Published 4 years ago
vue-use-request-state v0.2.2
useRequestState
A tiny utility with no dependencies for tracking the state of async operations
const { isLoading, isFailure, wrapRequest, errorMessage } = useRequestState();
const character = ref();
const fetchCharacter = wrapRequest(characterId => {
const response = await axios.get(`https://swapi.dev/api/people/${characterId}`);
character.value = response.data;
});
// or return a value
const getCharacter = wrapRequest(characterId => {
const response = await axios.get(`https://swapi.dev/api/people/${characterId}`);
return response.data;
});API
RequestState
import { RequestState } from 'vue-use-request-state';The enum that represents the request state. There are 4 values:
NOT_REQUESTED = 0LOADING = 1SUCCESS = 2FAILURE = 3
useRequestState
import useRequestState from 'vue-use-request-state';useRequestState is the entry point to the library. It returns a bunch of utilities and computed values:
wrapRequestreset: A function that resets the request state toNOT_REQUESTEDand the error toundefinedrequestState: The current request stateerror: The error that the wrapped request throwsisLoading: Computed ref to check if the request state isLOADINGisSuccess: Computed ref to check if the request state isSUCCESSisFailure: Computed ref to check if the request state isFAILUREisNotRequested: Computed ref to check if the request state isNOT_REQUESTEDerrorMessage: Computed ref for theerror.messageorundefinedif there is no error
wrapRequest
Create a function that wraps your async request in a try catch block that updates the requestState and error on failure or success
const { wrapRequest: wrapDoSomething } = useRequestState();
const doSomething = wrapDoSomething(async () => {
// Await your async operation
});You don't need to include a try catch block, but you could if you needed extra logic. Keep in mind the request state is only set to
FAILUREwhen an error is an uncaught error thrown inside the callback.