ich ein Objekt, das so etwas wie dieseMap Objekte und machen einen API-Aufruf
messageData = { items: [{name:'1st msg' draft:{contact: endpoint}},
{name:'1st msg' draft:{contact: endpoint}},
{name:'1st msg' draft:{contact: endpoint}]}
ich über die Elemente abbilden müssen aussieht und einen API-Aufruf zu tun, dass die Daten aus dem api Endpunkt erweitert und bringe sie in eine Tabellenzeile
renderMessageTableRow() {
let dataRef = this.state.messageData.items,
return(_.map(dataRef, (message) => {
// Get vars from message data including contact method endpoint
let id = message['@id'],
status = message.status,
draftData = message.draft.recipientAddress
return (
<tr>
<td>{id}</td>
<td>{status}</td>
</tr>
)
})
)
}
bisher sieht meine Funktion wie diese aber draftData ist ein Endpunkt ich muss meine Tabellenzeile mit erweitern und zu füllen, ich reagieren und Redux verwenden. Ich habe Bibliotheken wie async und co gesucht, bin mir aber nicht sicher, wie ich das in meine Kartenfunktion einbauen würde. Ich muss nur den Endpunkt aufrufen, um einige Variablen aus diesen Daten zu machen und den Rest meiner Tabelle damit zu füllen. Jede Hilfe würde sehr geschätzt werden
1- Müssen die Elemente in der gleichen Reihenfolge wie im Array sein? 2- die Verwendung von '.map' aus dem Unterstrich kann durch das native Javascript' dataRef.map' ersetzt werden (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) – jonathanGB
Da draftData ein Endpunkt ist, können Sie Versprechungen für jedes Element erstellen, was zu einer Reihe von Versprechen aus Ihrer Kartenmethode führt. Dann lösen Sie asynchron über Promise.all (oder ein React/Redux-Äquivalent) auf und füllen Sie Ihre Tabellenzeilen, sobald die einzelnen Versprechen gelöst sind. – roger
Verwenden Sie eine Bibliothek, um Anfragen zu stellen (ich verwende fetch: https://github.com/matthew-andrews/isomorphic-fetch). Fetch gibt ein Versprechen zurück. Führen Sie eine Karte aus, um alle Fetch's zu bekommen und setzen Sie sie in ein Versprechen. Dann (im wahrsten Sinne des Wortes, '' Promise.all(). Then (...) '') erstelle den reaktionsfähigen Teil, den du benötigst, indem du all diese Daten verwendest. Im Grunde, was @roger gesagt hat – iamnat