美文网首页
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