Cannot read property 'params' undefined (Reagieren Router-4)
Habe ich eine route eingerichtet, die zum Rendern einer Komponente:
<Route exact path="/page/:id" location={this.props.location} key={this.props.location.key} render={({ location }) => (
<PageStart key={this.props.location.key} />
)} />
Dann darin, dass die Komponente (PageStart) ich habe:
this.props.match.params.id
Aber es wirft einen Fehler:
Cannot read property 'params' of undefined
Vorbei an Requisiten, die beim Aufruf einfach component={}
scheint gut zu funktionieren, aber nicht in der render-Funktion. Warum?
InformationsquelleAutor Matt Saunders | 2017-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil mit
render
Sie sind nicht durch den Standard-Requisiten übergeben, indem Sie den router in eine Komponente, wie match, Geschichte etc.Wenn Sie schreiben:
Heißt es Nein
props
Wert inPageStart
Komponente.Schreiben es so:
Nun
{...props}
an alle die Wert inPageStart
Komponente.Warum ist es erforderlich, pass -
this.props.location.key
?nicht sicher, ich Kopier den Teil aus ques 🙂
InformationsquelleAutor Mayank Shukla
Weil Sie nicht weitergeben
match
Eigenschaft PageStart. Sie geben ihm einekey
aber keinematch
.Versuchen Sie, diese:
InformationsquelleAutor ChrisR
Den Fehler sagt, die
match
prop ist nicht definiert. Das ist korrekt, es gibt keinematch
prop hier:Also müssen wir es übergeben. Die
render
Funktion erhält eine Reihe von Requisiten aus reagieren-router, und alle von Ihnen übergeben werden müssen, weiter unten. Also, verbreiten Sie Sie zuerst, und dann fügen Sie Ihre eigenen Requisiten:InformationsquelleAutor goto-bus-stop
In meinem Fall fand ich heraus, dass es ist nicht mehr
match
im router Requisiten, es ist jetztcomputedMatch
.I. E:
this.props.computedMatch.params.id
Hoffe, das jemand hilft!
InformationsquelleAutor Nick Hall
versuchen Sie dies bitte. ich hoffe, es kann das Problem lösen.
InformationsquelleAutor John Htet