vue-rest-hooks
Version:
typescript restfull-api reactive @vue/composition-api
35 lines (34 loc) • 1.37 kB
JavaScript
import { ref } from "@vue/composition-api";
export /**
* use restfull api request typeof post put delete reactive
*
* @template TParams
* @template TData
* @param {RequestType<TParams, TData>} request
* @param {MutationParams<TParams, TData>} [params]
* @returns {[typeof execute, MutationResult<TData>]}
*/ var useMutation = function (request, params) {
if (params === void 0) { params = {}; }
var data = ref(void 0);
var loading = ref(false);
var error = ref(void 0);
var _a = params.variables, variables = _a === void 0 ? {} : _a, update = params.update;
var variableState = ref(variables);
var execute = function (execParams) {
if (execParams === void 0) { execParams = {}; }
var _a = execParams.variables, variables = _a === void 0 ? {} : _a, _b = execParams.update, updateFn = _b === void 0 ? update : _b;
variableState.value = variables;
loading.value = true;
return request(variableState.value)
.then(function (result) {
data.value = result;
updateFn === null || updateFn === void 0 ? void 0 : updateFn(result);
})
.catch(function (err) {
error.value = err;
}).finally(function () {
loading.value = false;
});
};
return [execute, { data: data, loading: loading, error: error }];
};