美文网首页
React-Router

React-Router

作者: sdcV | 来源:发表于2017-07-27 15:13 被阅读17次

    <b>React-Router其实很简单,就是控制页面之间的跳转。</b>
    现举例说明:

    1. 创建几个组件
      ./app/containers/App.jsx 所有页面的外壳
      ./app/containers/Home 主页
      ./app/containers/User 用户页
      ./app/containers/NotFound 404
      App组件所有路由外面套的外壳

       class App extends React.Component {
           render() { 
               return ( 
                   <div>{this.props.children}</div> 
               ) 
           }
       }
      
    2. 配置 router
      class RouteMap extends React.Component {
      updateHandle() {
      console.log('每次router变化之后都会触发')
      }
      render() {
      return (
      <Router history={this.props.history} onUpdate={this.updateHandle.bind(this)}>
      <Route path='/' component={App}>
      <IndexRoute component={Home}/>
      <Route path='user' component={user}/>
      <Route path="*" component={NotFound}/>
      </Route>
      </Router> )
      }
      }
      使用时直接在页面引入RouteMap就好了
      import React from 'react' import { render } from 'react-dom'
      import { hashHistory } from 'react-router'

       import RouteMap from './router/routeMap'
      
       render( <RouteMap history={hashHistory}/>, 
               document.getElementById('root') 
       )
      
    3. 跳转页面
      <b>第一种是 <Link> 跳转(这个<Link>渲染完了就是html中a标签)</b>
      import React from 'react'
      import { Link } from 'react-router'

       class Home extends React.Component { 
           render() { 
               return ( 
                   <div> 
                       <p>Home</p>
                       <Link to="/user">to list</Link>
                   </div> ) 
           }
       } 
       export default Home
      

    <b>第二种是使用 js 跳转</b>
    import { hashHistory } from 'react-router'
    hashHistory.push('/home/')

    1. 获取参数
      可以获取 url 中的参数,比方说id参数
      this.props.params.id 获取
    2. 性能问题
      <b>视屏时间</b>
    • 解决方案就是先不要加载其他页面的代码,即首页需要哪些代码我就先加载、执行哪些,不需要的就先别加载。
    • 针对大型项目的静态资源懒加载问题,react-router 也给出了解决方案 —— huge-apps,它将 react-router 本身和 webpack 的 require.ensure结合起来,就解决了这一问题。我本人项目没那么复杂,暂时没用到。

    相关文章

      网友评论

          本文标题:React-Router

          本文链接:https://www.haomeiwen.com/subject/rxawhxtx.html