Passer du routeur de réaction 3.x à 4.x
Comment puis-je déplacer à l'aide de https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-2/react-router.min.js
de l'aide https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.1/ReactRouter.min.js
?
Exemple à l'aide de 3.x ci-dessous.
HTML
<script src="https://unpkg.com/[email protected]/dist/react.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/react-dom.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.1/ReactRouter.min.js"></script>
JS
let { Router, IndexRoute, Redirect, Route, Link, browserHistory } = ReactRouter;
history.replaceState(0,0,'/');
const Main = () =>
<Router history={browserHistory}>
<Route path='/' component={App}>
<IndexRoute component={Home}/>
<Route path='map' component={Map}/>
<Route path='settings' component={Settings}/>
<Redirect from='foo' to='/' />
<Route path='*' component={NotFound}/>
</Route>
</Router>
const App = props =>
<div>
<Navigation>
<Link to='/map'>Map</Link>
<Link to='/settings'>Settings</Link>
<Link to='/foo'>Foo</Link>
</Navigation>
{props.children}
</div>
const Navigation = props => <nav {...props} />
const Home = () => <h1>Home</h1>
const Map = () => <h1>Map</h1>
const Settings = () => <h1>Settings</h1>
const NotFound = (props) => <h1>404 - Not Found</h1>
ReactDOM.render(<Main />, document.body);
Voir en action: https://jsfiddle.net/developit/nvpr63eg/
Si je me déplace à toute de la CAN a accueilli 4.x versions si cela ne fonctionne pas (code inaccessible après l'instruction return).
source d'informationauteur rich
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de le configurer avec redux en changeant un peu les choses:
D'abord,
browserHistory
n'est pas défini surreact-router
plus. Un moyen de la récupérer est d'utiliser le packagehistory
.Vous aurez besoin d'installer (redux facultatif):
Au lieu d'essayer d'importer des
browserHistory
utilisation:Si vous souhaitez utiliser redux puis de l'importer et l'ajouter à votre combiné réducteurs:
Ensuite vous créez le
history
objetPuis changer votre routeur pour utiliser le nouveau
history
objetTout le reste doit être la même.
Si tout le monde court dans
The prop history is marked as required in Router, but its value is undefined.
C'est parce que
browserHistory
n'est plus disponible dans réagissent-routeur, voir le post de l'utilisation de l'histoire paquet.Liées
C'est un complément de réponse à la Paul S posté ci-dessus.
De crédit doit toujours goto paul pour publication.
Raison m complétant la réponse est bcoz:-
fils suit:
paquet.json:
index.js:
Il devrait y avoir un guide de mise à niveau plus proche de la version complète. J'ai adapté le code pour la prochaine beta au lieu de l'alpha. La bêta n'est pas encore sorti, donc il n'y a malheureusement pas de version hébergée de Réagir Routeur que vous serez en mesure de tester avec.
Vous pouvez certainement, mais vous auriez besoin de réécrire certains de vos composants et de l'application de la logique parce que votre code ne sera pas exécuté comme il est actuellement.
À lire sur la documentation officielle, ici. Il y a aussi une bonne FAQ à propos de ces changements, ici. En voici un extrait:
Si vous souhaitez mettre à niveau, il y a un guide de mise à jour à venir, selon une source officielle:
Avec cela à l'esprit, pour en revenir à votre problème d'origine: faire de votre
App
composant fonctionne correctement, il devrait maintenant ressembler à quelque chose comme:Espère que cette aide. Bonne chance.
modifier: Apparemment @PaulS a un exemple pour une future version de Réagir-Routeur v4. Si le poste est précis, le code ci-dessus ne fonctionne pas dans l'avenir; il ne fonctionne que pour la version actuelle disponible. Gardez un œil sur les pages en lien ci-dessus pour info quand RRv4 va vivre.
Il ya un couple de choses à noter avec la sortie récente de la version 4, à propos de votre jsfiddle. La première chose, c'est que la bibliothèque dans son ensemble a été séparé: web, natif et de base (utiliser n'importe où). L'utilisation de réagir-routeur-dom pour le web uniquement.
2: La façon dont vous imbriquez des routes est tout à fait différent. Au lieu de nidification des routes de votre composant parent, vous avez réellement ne peut pas faire, tout ce que vous avez à faire est de définir votre composant parent (BrowserRouter dans ce cas), et puis vous êtes libre de définir des routes tout au long de vos composants. Votre composants de définir la hiérarchie maintenant. Par exemple, vous pouvez organiser votre Principal et l'Application des composants comme ceci:
Espère que cette aide. Veuillez prendre un coup d'oeil à mon fix pour votre jsfiddle ci-dessous, et laissez-moi savoir si vous avez des questions.
https://jsfiddle.net/bagofcole/kL6m8pjk/12/
Pour plus d'informations consulter: https://reacttraining.com/react-router/web/guides/quick-start