2016-07-19 2 views
4

У меня есть запланированная функция, которая считывает данные с сервера каждые х минут, и я хочу, чтобы обновить состояние с ответом:Реагировать Redux - вызов отправка без подключения (не из среагировать компонента)

api.fetchData().then(
    (response) => { 
     dispatch(Actions.updateConfiguration(response)); 
    } 
}; 

Эта функция не должна быть реагирующим компонентом, поскольку она ничего не делает.

Однако я не могу понять, как вводить функцию dispatch без использования connect, что требует, чтобы он был компонентом реакции.

Спасибо.

+0

Просто позвоните непосредственно в магазине: 'store.dispatch (Actions.updateConfiguration (ответ))' – DDS

+3

Множество вариантов здесь: 1) Используйте 'store.dispatch' непосредственно. 2) Используйте 'redux-saga' для реализации долговременной задачи, которая начнет и остановит выборку данных. 3) Создайте компонент, который служит поставщиком данных для своих детей. –

ответ

4

У нас есть аналогичная вещь (повторяющаяся проверка на то, что токен аутентификации по-прежнему действителен), и мы сделали следующее.

В нашей маленькой функции «Util» мы получаем Redux магазин в качестве параметра

export function startSessionTimer(store) { 
    const intervalId = setInterval(() => { 
     if (...) { 
      store.dispatch(...); 
      clearInterval(intervalId); 
     } 
    }, (15 * 60 * 1000)); 
} 

Тогда, где мы создали наше приложение и создать магазин, мы также ножным запуска таймера.

const store = configureStore(...); 
startSessionTimer(store); 
Смежные вопросы