UNPKG

vue-rest-hooks

Version:

typescript restfull-api reactive @vue/composition-api

54 lines (53 loc) 1.68 kB
import { ref, onMounted } from "@vue/composition-api"; export /** * use restfull api typeof get reactive * * @template TParam * @template TData * @param {(params?: TParam) => Promise<TData>} request * @param {QueryParams<TParam>} [params] * @returns {QueryResult<TParam, TData>} */ var useQuery = function (request, params, options) { if (params === void 0) { params = {}; } if (options === void 0) { options = {}; } var loading = ref(false); var error = ref(void 0); var data = ref(void 0); var variableState = ref(void 0); var updateFn = ref(void 0); var variables = params.variables, update = params.update; variableState.value = variables; updateFn.value = update; var refetch = function (executeParams) { if (executeParams === void 0) { executeParams = {}; } var variables = executeParams.variables, update = executeParams.update; variableState.value = variables; updateFn.value = update; execute(); }; function execute() { loading.value = true; return request(variableState.value || {}) .then(function (result) { var _a; (_a = updateFn.value) === null || _a === void 0 ? void 0 : _a.call(updateFn, result); data.value = result; }) .catch(function (err) { error.value = err; }).finally(function () { loading.value = false; }); } onMounted(function () { if (options.lazy) return; execute(); }); return { loading: loading, error: error, data: data, refetch: refetch }; };