Ich habe eine App, die Benutzerprofile hat. Auf dem Benutzerprofil gibt es eine Liste von Freunden, und wenn Sie auf einen Freund klicken, sollte er Sie zu diesem anderen Benutzerprofil führen.Update Route und Redux State-Daten zur gleichen Zeit
Wenn ich derzeit klicke, um zum anderen Profil zu navigieren (über den Link redux-router), wird die URL aktualisiert, das Profil wird jedoch nicht aktualisiert oder die neue Route wird wiedergegeben.
Hier ist ein vereinfachtes Code-Snippet, ich habe der Einfachheit halber eine Menge Code herausgenommen. Es gibt einige weitere Ebenen darunter, aber das Problem tritt auf der obersten Ebene in meinem Profilcontainer auf. Wenn ich die Property userId für ProfileSections aktualisieren kann, wird sich alles ausbreiten.
class Profile extends Component {
componentWillMount() {
const { userId } = this.props.params
if (userId) { this.props.getUser(userId) }
}
render() {
return <ProfileSections userId={user.id} />
}
}
const mapStateToProps = ({ user }) => {
return { user }
}
export default connect(mapStateToProps, { getUser })(Profile);
Wie Sie sehen können, was passiert ist, dass ich die getUser
Aktion auf componentWillMount
, leite die nur einmal geschehen wird, und ist der Grund, warum die Route ändert aber die Profildaten nicht aktualisiert.
Wenn ich es zu einem anderen Lebenszyklus-Hook wie componentWillUpdate
ändern, um die getUser-Aktion auszuführen, bekomme ich eine endlose Schleife von Anforderungen, weil es den Status aktualisieren und dann Komponente aktualisieren wird.
Ich habe auch versucht, die onEnter
Hook von React-Router auf Route-Komponente zur Verfügung gestellt, aber es feuert nicht beim Navigieren von einem Profil zum anderen, da es die gleiche Route ist, so dass es nicht funktioniert.
Ich glaube, dass ich darüber falsch nachdenke und nach einer Anleitung suche, wie ich mit dieser Situation umgehen kann, wenn ich von einem Profil zum nächsten navigiere, während die Daten im Redux-Speicher gespeichert sind.
können Sie sich https://github.com/reactjs/reac- router-redux ansehen, wenn es zu Ihrem Anwendungsfall passt – Aprillion