Я пытаюсь реализовать функцию автообновления (снова получать данные из API) в приложении redux.Я бродил, если можно использовать глобальную переменную в ../action.js
, чтобы использовать clearTimeout в другой функции - для остановки автообновления после изменения страницы или выполнения любого другого условия.Это нормально или я должен использовать другой подход?
.. / action.js
import fetchWeather from '../../shared/fetchWeather';
import * as actionTypes from '../actions/actionTypes';
let refreshTimeout = null;
export const refresh = (endpoint, queryParams) => {
return dispatch => {
refreshTimeout = setTimeout(() => {
dispatch(initWeather(endpoint, queryParams));
}, 1000)
}
}
export const initWeather = (endpoint, queryParams) => {
return dispatch => {
fetchWeather(endpoint, queryParams)
.then(response => {
dispatch(setWeather(response.data));
dispatch(refresh(endpoint, queryParams))
})
.catch(error => {
dispatch(fetchWeatherFailed(error.message))
})
}
}
export const initForecast = (endpoint, queryParams) => {
clearTimeout(refreshTimeout); // clearTimeout to stop refreshing (re-fetching data)
return dispatch => {
fetchWeather(endpoint, queryParams)
.then(response => {
dispatch(setForecast(response.data))
})
.catch(error => {
dispatch(fetchForecastFailed(error.message))
})
}
}
.,.