Die Datenquelle für meine App bietet nur Daten im XML-Format.XML in react-redux-promise-App parsen
Ich benutze Axios, um die XML-Daten zu erhalten. Es endet als eine Zeichenfolge in dem Datenabschnitt des Ergebnisses.
Ich habe versucht, xml2js zu verwenden, um es zu konvertieren, aber es löst nur einen asynchronen Job und kehrt zurück, so dass ich nicht die Redux-Versprechen Middelware funktioniert. Die Nutzlast ist nichts, wenn die Reduzierer die Daten an die Komponente senden, die sie rendern soll.
Nicht sicher, ob dies sinnvoll ist, aber kann ich den Reducer warten, bis der neue Funktionsaufruf zurückkommt, bevor er die Daten an die Komponente sendet?
Aktion index.js
export function fetchData(jobid, dest) {
const url = `${DATA_URL}jobid=${jobid}&refdist=${dest}`;
const request = axios.get(url);
console.log(request);
return {
type: FETCH_DATA,
payload: request
}
}
mein Minderer
export default function (state = [], action) {
console.log(action);
switch (action.type) {
case FETCH_DATA:
console.log("pre");
parseString(action.payload.data, function (err, result) {
// Do I need some magic here??? or somewhere else?
console.dir(result);
});
return [action.payload.data, ...state];
}
return state;
}
weiß, dass ich das Reduktionscode ist nicht korrekt, da es die nicht konvertierte XML-Zeichenfolge zurückgibt, aber was soll ich zurückgeben? Oder kann ich den Reduzierer stoppen, bis die ParseString-Funktion zurückgegeben wurde? – Endre
Der Reducer sollte nicht parsen. Der Reducer unternimmt eine Aktion und der alte Zustand einen neuen Zustand. Seine Aufgabe ist es nichts zu holen oder zu konvertieren. Wenn Sie Ihren Reducer pausieren könnten, würden Sie die gesamte Browserseite sperren wollen, bis es fertig ist? Warten Sie, bis alle Daten bereit sind, und senden Sie erst dann eine Aktion, um diese in den App-Status zu versetzen. Und das schließt Async-Parsing der Daten ein. – DDS
Verwenden Sie Redux-Thunk für asynchrone Aktionen. Oder verwende Redux-Saga (sei auf eine Lernkurve vorbereitet). – DDS