react-router vs react-router-dom, quando usar um ou outro?

123

Ambos têm rota, link, etc. Quando usar um ou outro? Estou muito confuso sobre onde usar cada um. Lado do servidor? Do lado do cliente?

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

Em alguns exemplos, você precisa passar a história, em outros não. O que fazer?

<Router history={browserHistory}>

vs

<Router>

É realmente confuso quando usar um ou outro, qualquer ajuda apreciada.

Chulian
fonte

Respostas:

151

react-router contém todos os componentes comuns entre react-router-dom e react-router-native . Quando você deve usar um em vez do outro? Se você estiver na web, o react-router-dom deve ter tudo de que você precisa, pois também exporta os componentes comuns de que você precisa. Se você estiver usando o React Native, o react-router-native deve ter tudo de que você precisa pelo mesmo motivo. Portanto, você provavelmente nunca terá que importar nada diretamente do react-router . Tanto quanto quando você usa

<Router history={browserHistory}>

vs

<Router>

No RRv4 você não precisa passar o browserHistory, que era apenas para versões anteriores do roteador.

Se você ainda está confuso, pode verificar os detalhes de cada pacote aqui

Tyler McGinnis
fonte
2
devemos remover o react-router do projeto ou afeta o react-router-dom ?? Esse pacote react-router é obrigatório para trabalhar com react-router-dom?
YÒGÎ
3
@snAtchnAren Não é obrigatório. Você nunca deve precisar do pacote "react-router" se já instalou "react-router-dom".
Tyler McGinnis
2
Se eu usar o react-router-dom em vez do react-router, isso diminuirá o tamanho do meu pacote?
Vrishank
26

react-router-dom é uma react-routervantagem:

Atombit
fonte
6

Na v4, o react-router exporta os principais componentes e funções. react-router-dom exporta componentes compatíveis com DOM, como <Link>(que renderiza <a>) e (que interage com a janela.history do navegador).

react-router-domreexporta todas as exportações do react-router, de modo que você só precisa importar react-router-domem seu projeto.

Sooraj
fonte
mas você precisa npm instalar o react-router e o react-router-dom separadamente?
joedotnot