phx-react
Version:
PHX REACT
54 lines • 2.71 kB
JavaScript
import { __assign, __awaiter, __generator, __spreadArray } from "tslib";
import { useState, useEffect } from 'react';
import PHXClientQueryV3 from './clientQueryV3';
export default function PHXUseQueryDataV3(_a) {
var _this = this;
var dependencies = _a.dependencies, query = _a.query, variables = _a.variables, requiredFields = _a.requiredFields;
var _b = useState(true), isLoading = _b[0], setIsLoading = _b[1];
var _c = useState(), data = _c[0], setData = _c[1];
var _d = useState(null), error = _d[0], setError = _d[1];
var isValidVariables = function () {
// Nếu không có variables, trả về true
if (!variables)
return true;
// Nếu có requiredFields, kiểm tra chỉ các key trong requiredFields
if (requiredFields) {
return requiredFields.every(function (key) { return variables[key] !== undefined && variables[key] !== null && variables[key] !== ''; });
}
// Nếu không có requiredFields, kiểm tra toàn bộ variables
return Object.values(variables).every(function (value) { return value !== undefined && value !== null && value !== ''; });
};
useEffect(function () {
var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
var response, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!isValidVariables()) {
return [2 /*return*/];
}
_a.label = 1;
case 1:
_a.trys.push([1, 3, 4, 5]);
return [4 /*yield*/, PHXClientQueryV3(__assign({ query: query }, (variables && { variables: variables })))];
case 2:
response = _a.sent();
setData(response.data);
return [3 /*break*/, 5];
case 3:
err_1 = _a.sent();
setError('An error occurred while fetching data.');
console.error(err_1);
return [3 /*break*/, 5];
case 4:
setIsLoading(false);
return [7 /*endfinally*/];
case 5: return [2 /*return*/];
}
});
}); };
fetchData();
}, Array.isArray(dependencies) ? __spreadArray([], dependencies, true) : []); // Ensure dependencies is an array
return { isLoading: isLoading, data: data, error: error };
}
//# sourceMappingURL=PHXUseQueryDataV3.js.map