react-router vs react-router-dom, when to use one or the other?

前端 未结 4 1836
失恋的感觉
失恋的感觉 2020-12-07 10:00

Both have Route, Link, etc. When to use one or the other? I\'m really confused on where to use each one. Server side? Client side?

https://reacttraining.com/react-ro

相关标签:
4条回答
  • 2020-12-07 10:26

    Just use react-router-dom - react-router-dom re-exports all of react-router. The link on GitHub answer (what's the diff between react-router-dom & react-router?).

    0 讨论(0)
  • 2020-12-07 10:31

    In v4, react-router exports the core components and functions. react-router-dom exports DOM-aware components, like <Link> ( which renders <a>) and (which interacts with the browser's window.history ).

    react-router-dom re-exports all of react-router's exports, so you only need to import from react-router-dom in your project.

    0 讨论(0)
  • 2020-12-07 10:39

    react-router-dom is a react-router plus:

    • <BrowserRouter> which is <Router history={browserNativeHistoryApiWrapper}/>

      proof: https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/BrowserRouter.js

    • some Link improvements for browser

      proof: https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/Link.js

    • and with <NavLink> — wrapper that knows if it's "active" or not

      proof: https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/modules/NavLink.js

    0 讨论(0)
  • 2020-12-07 10:53

    react-router contains all the common components between react-router-dom and react-router-native. When should you use one over the other? If you're on the web then react-router-dom should have everything you need as it also exports the common components you'll need. If you're using React Native, react-router-native should have everything you need for the same reason. So you'll probably never have to import anything directly from react-router. As far as when you use

    <Router history={browserHistory}>
    

    vs

    <Router>
    

    In RRv4 you won't need to pass down browserHistory, that was just for previous versions of the router.

    If you're still confused, you can check out the details on each package here

    0 讨论(0)
提交回复
热议问题