In dem example ‚s src (UserPage.js):über Normalisierung in redux realen Welt Beispiel
const mapStateToProps = (state, ownProps) => {
// We need to lower case the login due to the way GitHub's API behaves.
// Have a look at ../middleware/api.js for more details.
const login = ownProps.params.login.toLowerCase()
const {
pagination: { starredByUser },
entities: { users, repos }
} = state
const starredPagination = starredByUser[login] || { ids: [] }
const starredRepos = starredPagination.ids.map(id => repos[id])
const starredRepoOwners = starredRepos.map(repo => users[repo.owner])
return {
login,
starredRepos,
starredRepoOwners,
starredPagination,
user: users[login]
}
}
ich feststellen, dass es viele Vorlagen wie xxx.ids.map(id => someEntities[id])
ist, bin ich nicht sicher, warum dieses Muster verwenden, um Arbeit .IMO, würde ich etwas wie import { map } from 'lodash'; someList && map(someList, item => {...})
in der Container-Komponente verwenden und einfach die Entitäten in der mapStateToProps
übergeben.
Also, könnte jemand seinen Zweck erklären? Danke.
Nicht ganz sicher, verstehe ich die Frage. Fragen Sie nach der Idee der Zuordnung über IDs, um eine Liste von Elementen zu erhalten, oder die Verwendung von 'Array.map()' anstelle von '_.map()'? – markerikson
Danke für die Antwort. Ich meine, es ist nicht notwendig, "über IDs abzubilden, um eine Liste von Elementen zu erhalten", wir können einfach etwas tun, wie 'importieren {map} von 'lodash'; someList && map (someList, item => {...}) ', um auch gut zu funktionieren.Wir verwenden' lodash.map' und nicht 'Array.prototype.map', weil unsere Daten von der' normalizr'-Bibliothek normalisiert werden, also ist das Objekt ein Objekt und kein Array. @markerikson –
Der Grund von mir bin im Gegensatz zu Way (zB 'xxx.ids.map (id => someEntities [id])') im Beispiel ist, dass die Ergebnisdaten nach diesem Schritt bereits vor diesem Schritt vorhanden sind. Wie ich oben sage, können wir einfach die Entitäten (von den normalisierten Daten durch 'normalizr'-Bibliothek) in der MapStateToProps zu unsererContainer-Komponente @markerikson –