2016-07-19 7 views
4

Ich habe eine geplante Funktion, die es den Zustand mit der Antwort aktualisieren möchten alle x Minuten und i Daten vom Server abruft:Redux Reagieren - rufen Versand ohne connect (nicht von einer Komponente reagieren)

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

Diese Funktion sollte keine Reaktionskomponente sein, da sie nichts rendert.

Allerdings kann ich nicht herausfinden, wie man dispatch Funktion ohne Verwendung connect injizieren, die es als eine Reaktionskomponente benötigt.

Danke.

+0

nennen Sie es einfach direkt auf dem Speicher: 'store.dispatch (Actions.updateConfiguration (Antwort))' – DDS

+3

Viele Möglichkeiten: 1) Verwenden Sie 'store.dispatch' direkt. 2) Verwenden Sie 'redux-saga', um eine lang andauernde Aufgabe zu implementieren, die den Datenabruf startet und stoppt. 3) Erstelle eine Komponente, die als Datenlieferant für ihre Kinder dient. –

Antwort

4

Wir haben eine ähnliche Sache (Eine wiederkehrende Prüfung, ob das Auth-Token noch gültig ist) und wir haben Folgendes getan.

In unserem kleinen „util“ -Funktion erhalten wir die redux Speicher als Parameter

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

Dann, wo wir unsere App und erstellen Sie den Speicher einrichten, wir auch den Timer anzukurbeln.

const store = configureStore(...); 
startSessionTimer(store);