tdc-js-modules
Version:
65 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var react_relay_1 = require("react-relay");
/*const query: any = '';*/
/*
const Qry: UseQuery<string[]> = () => {
return {sort: null!}
};
*/
function useQuery(query, variables, config, environment) {
if (config === void 0) { config = {
onMount: false,
initialValue: null,
transformFunction: null,
}; }
var _a = react_1.useState(config.initialValue), data = _a[0], setData = _a[1];
var _b = react_1.useState(false), loading = _b[0], setLoading = _b[1];
var _c = react_1.useState(null), error = _c[0], setError = _c[1];
var _d = react_1.useState(false), trigger = _d[0], setTrigger = _d[1];
function fetchData() {
/*setLoading(true);*/
setLoading(true);
react_relay_1.fetchQuery(environment, query, variables)
.then(function (data) {
if (config.transformFunction) {
setData(config.transformFunction(data));
}
else {
// @ts-ignore
setData(data);
}
setLoading(false);
})
.catch(function (err) {
setData(config.initialValue);
setError(err);
setLoading(false);
});
}
var fetch = function () {
setError(null);
setLoading(true);
setTrigger(true);
};
react_1.useEffect(function () {
if (config.onMount) {
fetchData();
}
}, [config.onMount]);
react_1.useEffect(function () {
if (trigger) {
fetchData();
setTrigger(false);
}
}, [trigger]);
return { data: data, loading: loading, error: error, fetch: fetch, setData: setData };
}
function createUseQueryInstance(useQryFn, environment) {
return function (query, variables, config) {
return useQryFn(query, variables, config, environment);
};
}
exports.default = useQuery;
//# sourceMappingURL=useQuery.js.map