1
0

moved ConfigProvider up in the hierarchy (to main.jsx) to wrap the whole App

This commit is contained in:
Jose
2025-02-26 21:08:19 +01:00
parent cf9d5e71fe
commit 40b8f49b89
13 changed files with 104 additions and 36 deletions

View File

@@ -3,15 +3,17 @@ import PropTypes from "prop-types";
const DataContext = createContext();
export const DataProvider = ({ children, apiUrl }) => {
export const DataProvider = ({ children, config }) => {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [dataLoading, setLoading] = useState(true);
const [dataError, setError] = useState(null);
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch(apiUrl);
const queryParams = new URLSearchParams(config.params).toString();
const url = `${config.baseUrl}?${queryParams}`;
const response = await fetch(url);
if (!response.ok) throw new Error("Error al obtener datos");
const result = await response.json();
setData(result);
@@ -23,10 +25,10 @@ export const DataProvider = ({ children, apiUrl }) => {
};
fetchData();
}, [apiUrl]);
}, [config]);
return (
<DataContext.Provider value={{ data, loading, error }}>
<DataContext.Provider value={{ data, dataLoading, dataError }}>
{children}
</DataContext.Provider>
);
@@ -34,7 +36,10 @@ export const DataProvider = ({ children, apiUrl }) => {
DataProvider.propTypes = {
children: PropTypes.node.isRequired,
apiUrl: PropTypes.string.isRequired,
config: PropTypes.shape({
baseUrl: PropTypes.string.isRequired,
params: PropTypes.object,
}).isRequired,
};
export const useData = () => useContext(DataContext);