react-router vs react-router-dom, quand utiliser l'un ou l'autre?

124

Les deux ont Route, Link, etc. Quand utiliser l'un ou l'autre? Je ne sais vraiment pas où utiliser chacun d'eux. Du côté serveur? Côté client?

https://reacttraining.com/react-router/

Dans certains exemples, vous devez passer l'historique, dans d'autres non. Que faire?

<Router history={browserHistory}>

contre

<Router>

Il est vraiment déroutant de savoir quand utiliser l'un ou l'autre, toute aide appréciée.

chulian
la source

Réponses:

152

react-router contient tous les composants communs entre react-router-dom et react-router-native . Quand devriez-vous utiliser l'un sur l'autre? Si vous êtes sur le Web, react-router-dom devrait avoir tout ce dont vous avez besoin car il exporte également les composants communs dont vous aurez besoin. Si vous utilisez React Native, react-router-native devrait avoir tout ce dont vous avez besoin pour la même raison. Vous n'aurez donc probablement jamais à importer quoi que ce soit directement depuis react-router . Dans la mesure où vous utilisez

<Router history={browserHistory}>

contre

<Router>

Dans RRv4, vous n'aurez pas besoin de transmettre browserHistory, c'était uniquement pour les versions précédentes du routeur.

Si vous êtes toujours confus, vous pouvez consulter les détails de chaque package ici

Tyler McGinnis
la source
2
devons-nous supprimer react-router du projet ou cela affecte react-router-dom ?? est-ce que le package react-router est obligatoire pour fonctionner avec react-router-dom?
YÒGÎ
3
@snAtchnAren Ce n'est pas obligatoire. Vous ne devriez jamais avoir besoin du paquet "react-router" si vous avez déjà installé "react-router-dom".
Tyler McGinnis
2
Si j'utilise react-router-dom sur react-router, cela réduira-t-il la taille de mon bundle?
Vrishank
26

react-router-dom est un react-routerplus:

Atombit
la source
6

Dans la v4, react-router exporte les composants et fonctions de base. react-router-dom exporte des composants compatibles DOM, comme <Link>(qui rend <a>) et (qui interagit avec window.history du navigateur).

react-router-domréexporte toutes les exportations de react-router, il vous suffit donc d'importer depuis react-router-domvotre projet.

Sooraj
la source
mais devez-vous npm installer à la fois react-router et react-router-dom séparément?
joedotnot