react-router-dom vs react-router
React Router V4 相对 V2/V3 几乎完全重写了,遵循 Just Component 的 API 设计理念
react-router V4分成了三个包:react-router-dom(for web)、react-router-native(for #native)、react-router(core)也就是说,
react-router-dom是在react-router基础上添加了一些在浏览器环境下的特定功能,如Link、BrowserRouter、HashRouter等
BrowserRouter:通过pushState和replaceState构建路由
HashRouter:通过location.hash和hashchange构建路由通过 npm 安装
react-router-dom时发现其依赖react-router,也就是说不需要显示安装react-router

1 | // 写法 1 |
对上面两种写法做个简单的分析,两种写法唯一的区别在于 Switch、Route 及 Router 的导入源不一致。
通过查看源码,发现在 react-router-dom 中 Switch、Route 及 Router 都是从 react-router 中导入了相应的组件,然后重新导出而已,并没有特殊的处理逻辑。
因此两种写法其实效果一样,写法 1 更简洁些。