react-router vs react-router-dom, ¿cuándo utilizar uno u otro?

123

Ambos tienen Ruta, Enlace, etc. ¿Cuándo usar uno u otro? Estoy realmente confundido sobre dónde usar cada uno. ¿Lado del servidor? ¿Lado del cliente?

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

En algunos ejemplos es necesario pasar el historial, en otros no. ¿Qué hacer?

<Router history={browserHistory}>

vs

<Router>

Es realmente confuso cuándo usar uno u otro, se agradece cualquier ayuda.

chulian
fuente

Respuestas:

151

react-router contiene todos los componentes comunes entre react-router-dom y react-router-native . ¿Cuándo debería usar uno sobre el otro? Si está en la web, react-router-dom debería tener todo lo que necesita, ya que también exporta los componentes comunes que necesitará. Si está utilizando React Native, react-router-native debería tener todo lo que necesita por la misma razón. Por lo tanto, probablemente nunca tendrá que importar nada directamente desde react-router . En cuanto a cuando usas

<Router history={browserHistory}>

vs

<Router>

En RRv4 no necesitará pasar browserHistory, eso fue solo para versiones anteriores del enrutador.

Si aún está confundido, puede consultar los detalles de cada paquete aquí

Tyler McGinnis
fuente
2
¿Debemos eliminar react-router del proyecto o afecta a react-router-dom? ¿Es obligatorio que el paquete react-router funcione con react-router-dom?
YÒGÎ
3
@snAtchnAren No es obligatorio. Nunca debería necesitar el paquete "react-router" si ya ha instalado "react-router-dom".
Tyler McGinnis
2
Si uso react-router-dom sobre react-router, ¿disminuirá el tamaño de mi paquete?
Vrishank
26

react-router-dom es una react-routerventaja:

Atombit
fuente
6

En v4, react-router exporta los componentes y funciones principales. react-router-dom exporta componentes compatibles con DOM, como <Link>(que representa<a> ) y (que interactúa con el historial de ventanas del navegador).

react-router-domreexporta todas las exportaciones de react-router, por lo que solo necesita importar desde react-router-domsu proyecto.

Sooraj
fuente
pero ¿necesita npm instalar tanto react-router como react-router-dom por separado?
joedotnot