Ich habe intern ein Problem mit dem Strukturieren meiner Redux-Aktionen, die Daten über eine Rest-API abrufen.Abrufen von Daten mit Redux-Aktionen
Ich Abrufen einer Vielzahl von Daten wie
- aller Beiträge veröffentlicht
- ein singulärer Beitrag
- alle aktuellen Benutzer
- Suchergebnisse
Ich frage mich, ob ich erstellen eine Aktion, die die Daten von jedem Endpunkt holt oder wenn ich eine singuläre Abrufaktion erzeuge, die die Daten von einem gelieferten Router holt e?
Aktuelle Umsetzung:
function requestPosts(site) {
return {
type: REQUEST_POSTS,
site
}
function fetchPosts(site) {
return dispatch => {
dispatch(requestPosts(site))
return fetch(`http://notareallink.com/posts`)
.then(response => response.json())
.then(json => dispatch(receivePosts(site, json)))
}
function requestPost(site) {
return {
type: REQUEST_POST,
site
}
function fetchPost(site) {
return dispatch => {
dispatch(requestPost(site))
return fetch(`http://notareallink.com/post/post-id`)
.then(response => response.json())
.then(json => dispatch(receivePost(site, json)))
}
function requestUsers(site) {
return {
type: REQUEST_USERS,
site
}
function fetchUsers(site) {
return dispatch => {
dispatch(requestUsers(site))
return fetch(`http://notareallink.com/users`)
.then(response => response.json())
.then(json => dispatch(receiveUsers(site, json)))
}
Für mich fühlt sich das wie eine Last von doppeltem Code im Grunde das gleiche tun (Fetching die Daten vom Endpunkt).
Ist dies der richtige Weg, oder sollte ich eine singuläre Aktion erstellen, die die Daten holt und die relevante Route weiterleitet?
Es tut mir leid, wenn das nicht sehr klar ist, aber ich versuche, meinen Kopf darum zu wickeln, wie ich dies austippe.
Ich denke, die Vervielfältigung nicht mit mehreren Aktionen, sondern vielmehr Ihre duplizierten API-Aufruf-Routine. Eine Sache, die Sie versuchen können, ist das abstrahieren der 'fetch(). Then(). Then()' in ein API-Modul, so dass Sie Aktion Schöpfer nur diese eine Funktion aufrufen, anstatt die gleichen Zeilen wieder und wieder zu schreiben. – r0dney