Yo-Router

简介

Yo-Router 是基于 React Router 实现的一个路由库。

Yo-Router 一方面继承了 React-Router 的特点,提供了声明式的方式来创建路由,且保证 UI 的显示与 URL 切换的同步;同时还重写了 History 模块,让路由能自由的在 SPA/多页 下进行切换,并提供统一的生命周期管理与数据传递方式。

同时还支持异步路由的方式,可以让你的页面资源异步加载,提升大型应用的页面加载效率。

安装

使用 npm:

  1. $ npm install --save yo-router

示例

  1. import React, { Component } from 'react'
  2. import { render } from 'react-dom'
  3. import { Router, Route, Link, createBrowserHistory } from 'yo-router'
  4. // 创建历史
  5. const browserHistory = createBrowserHistory()
  6. const App = ({ children }) => <div>{children}</div>
  7. const About = () => <div>About</div>
  8. const NoMatch = () => <div>No Match!</div>
  9. const Users = ({ children }) => (
  10. <div>
  11. <h1>Users</h1>
  12. <div className="master">
  13. <ul>
  14. {/* 使用 <Link> 标签进行方便的路由跳转 */}
  15. {this.state.users.map(user => (
  16. <li key={user.id}><Link to={`/user/${user.id}`}>{user.name}</Link></li>
  17. ))}
  18. </ul>
  19. </div>
  20. <div className="detail">
  21. {children}
  22. </div>
  23. </div>
  24. )
  25. class User extends Component {
  26. componentDidMount() {
  27. this.setState({
  28. // 对应页面内的组件将会获取 URL 参数,以便进行数据的获取和渲染
  29. user: findUserById(this.props.params.userId)
  30. })
  31. }
  32. render() {
  33. return (
  34. <div>
  35. <h2>{this.state.user.name}</h2>
  36. </div>
  37. )
  38. }
  39. })
  40. // 声明路由配置
  41. render((
  42. <Router history={browserHistory}>
  43. <Route path="/" component={App}>
  44. <Route path="about" component={About}/>
  45. <Route path="users" component={Users}>
  46. <Route path="/user/:userId" component={User}/>
  47. </Route>
  48. <Route path="*" component={NoMatch}/>
  49. </Route>
  50. </Router>
  51. ), document.getElementById('root'))

更多的使用方法,可以参考我们的例子:Demo