clearTimeout в файле действий Redux - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь реализовать функцию автообновления (снова получать данные из 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))
      })
  }
}

.,.

...