Nach der Aktualisierung von React Router V2.x auf V4.x gehen alle Routen auf die Hauptseite.Umstellung von React Router V2.x auf V4.x
Hier ist die Route auf V2.x:
import {Router, Route, hashHistory } from 'react-router'
const routes = <Route component={App}>
<Route path="/results" component={Results} />
<Route path="/" component={Voting} />
</Route>;
ReactDOM.render(
<Router history={hashHistory}>{routes}</Router>,
document.getElementById('app')
);
Und das sind Strecken, auf V4.x:
index.jsx Datei:
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'
import App from './components/App';
import Voting from './components/Voting';
import Results from './components/Results';
const withAppLayout = Component => props => <App><Component {...props} /></App>
const routes = <Switch>
<Route exact path="/" component={withAppLayout(Voting)} />
<Route path="/results" component={withAppLayout(Results)} />
</Switch>;
ReactDOM.render(
<Router component={App}>
{routes}
</Router>,
document.getElementById('app')
);
App.jsx Datei:
import React from 'react';
import {List} from 'immutable';
const pair = List.of('Trainspotting', '28 Days Later');
export default React.createClass({
render: function() {
console.log(this.props.children);
return React.cloneElement(this.props.children, {pair: pair});
}
});
Voting.jsx Datei:
import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
import Winner from './Winner';
import Vote from './Vote';
export default React.createClass({
mixins: [PureRenderMixin],
render: function() {
return <div>
{this.props.winner ?
<Winner ref="winner" winner={this.props.winner} /> :
<Vote {...this.props} />
}
</div>;
}
});
Results.jsx Datei:
import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
export default React.createClass({
mixins: [PureRenderMixin],
render: function() {
return <div>Hello from results!</div>
}
});
Wie um diesen Fehler zu beheben?
Ja, das ist der Code, den ich benutze, genaues Hinzufügen funktioniert nicht, und der '/ results' Pfad geht auch auf die Hauptseite. –
Da wir dabei sind, wird mit BrowserRouter die Geschichte, die Sie übergeben, sowieso nicht verwendet, und es sollte eine Warnung in Ihrer Konsole ausgeben. Ich würde es sowieso entfernen, da es nichts macht. Oder verwenden Sie den Router, da Sie damit einen benutzerdefinierten Verlauf angeben können. Auch wickle ich immer meine jsx mit Klammern, wenn es mehrzeilig ist, vielleicht versuchen Sie es nur für den Fall, wir wissen es nie! –
Router hat auch keine Komponente prop, also entfernen Sie es einfach, das kann Ihr Problem tatsächlich verursachen, da die App-Komponente auch von Ihrem withAppLayout HOC zurückgegeben wird. –