blob: 30813121b29f67951d5ef56554eef66a28071831 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
// usePolling.js
import { useState, useEffect } from 'react';
const usePolling = (url, interval) => {
const [data, setData] = useState(null);
const [error, setError] = useState('');
useEffect(() => {
const fetchData = async () => {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
setData(result);
setError(null);
} catch (err) {
setError('Failed to fetch data: ' + err.message);
}
};
fetchData();
const pollingInterval = setInterval(fetchData, interval);
return () => clearInterval(pollingInterval);
}, [url, interval]);
return { data, error };
};
export default usePolling;
|