Reagieren router v4 funktioniert nicht mit Redux
Entwicklung einer Anwendung Reagieren mit Reagieren v4 router. Alles funktionierte gut, bis ich eingeführt Redux in meiner app. Da dann auf klicken Sie links auf route ändern Sie die browser-url ändert, aber die Komponente entsprechend der route ist nicht immer geladen. Es funktioniert gut, wenn ich kommentieren Redux-code. Was könnte die Ursache sein? Hier ist mein code für routing:
import React, { Component } from 'react';
import { Switch, Route, Link } from 'react-router-dom';
import LeftSubDefault from './../components/left-sub-default.component';
import LeftSubOne from './../components/left-sub-one.component';
import LeftSubTwo from './../components/left-sub-two.component';
import { withRouter } from 'react-router-dom';
import { connect } from "react-redux";
import { goToLeftDefault, goToLeftOne, goToLeftTwo } from "./../actions/leftRouteActions.js";
class LeftComponent extends Component {
render() {
return (
<div className="col-xs-6">
<p>
Current sub route: {this.props.currentRoute}
</p>
<ul>
<li onClick={this.props.goToDefault}><Link to={'/'}>Go To Default</Link></li>
<li onClick={this.props.goToSub1}><Link to={'/left-sub1'}>Go To One</Link></li>
<li onClick={this.props.goToSub2}><Link to={'/left-sub2'}>Go To Two</Link></li>
</ul>
<Switch>
<Route exact path='/' component={LeftSubDefault} />
<Route exact path='/left-sub1' component={LeftSubOne} />
<Route exact path='/left-sub2' component={LeftSubTwo} />
</Switch>
</div>
);
}
}
const mapStateToProps = (store) => {
return {
currentRoute: store.routes.currentRoute
};
}
const mapDispatchToProps = (dispatch) => {
return {
goToDefault: () => {
dispatch(goToLeftDefault())
},
goToSub1: () => {
dispatch(goToLeftOne())
},
goToSub2: () => {
dispatch(goToLeftTwo())
}
};
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(LeftComponent));
PS: ich bekomme keine Fehlermeldung in der Konsole. Der code läuft sauber nur die Komponenten nicht geladen werden. Hier ist ein ähnlicher thread auf github: Vier tausend sechs hundert eins und siebzig. Ich habe gesehen, viele threads auf verschiedenen Seiten, aber keiner hat die Lösung für dieses Problem.
- Siehe Diese Antwort, Genau kann dir helfen.
- Eine Redux-Bindung für Reagieren Router v4
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hah, jetzt mache ich ein Projekt mit reagieren-router und redux auch =).
Blick auf die offizielle Dokumentation über die redux-integration https://reacttraining.com/react-router/web/guides/redux-integration.
Ich denke der wichtigste Punkt ist, um von
withRouter
undconnect
Hocs.Aus der offiziellen docs.
UPD
connect
verhindert re-render standardmäßig. Esshallow-equal
Vergleich von Requisiten, das ist, warum Sie Ihre Routen nicht aktualisiert werden können.connect
? Wenn Sie das tun, dann sollten Sie wickeln Sie Sie vonwithRouter
. Aktualisiert meine Antwort.ConnectedRouter
ausreact-router-redux
stattBrowserRouter
. Ich denke, es sollte helfen.Ich bin mit reagieren-router-dom-v4.1.1. Es ist für mich arbeiten. Hier ist meine Demo -
Hoffe, es ist hilfreich für dich ^^