Общение с базой данных обычно бывает односторонним. Вы не будете знать, изменились ли данные, пока не спросите базу данных.
Если вы можете выяснить, как часто ваши данные будут изменяться в среднем, вы можете вызывать метод fetchData с интервалом, чтобы обновлять его каждый раз. так часто.
Вот пример, который вызывает fetchData каждые две секунды.
function useInterval(callback, delay) {
const savedCallback = React.useRef();
React.useEffect(() => {
savedCallback.current = callback;
});
React.useEffect(() => {
function tick() {
savedCallback.current();
}
let id = setInterval(tick, delay);
return () => clearInterval(id);
}, [delay]);
}
const averageDataRefreshDelay = 2 * 1000 // 2 seconds
const App = props => {
const { fetchData } = props;
useInterval(fetchData, averageDataRefreshDelay);
return (
<div>Your component</div>
)
}
ReactDOM.render(<App fetchData={ () => console.log('... fetching data ...') } />, document.getElementById('root'));
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="root"></div>