react-router实现路由跳转

作者: 旧丶时候 | 来源:发表于2017-04-14 07:14 被阅读500次

    0. 前言

    学习react是一条漫长的路,但是只要我们坚持下去,再远的路也可以走到尽头。好,好,好,难喝的一碗鸡汤!!!哈哈,其实,我就是想说,react的东西太多了,可能我们学会的只是一个边边角角,所以还要不断的学习!!!


    timg.jpeg

    1.简介

    react-router它通过管理 URL,实现组件的切换和状态的变化,在开发复杂的应用的时候几乎肯定会用的到。

    2. 怎么用react-router实现路由跳转?

    在这里呢!我就不说怎么配置react的项目过程了,在前面的文章我已经有说过,所以,就不再演一遍了,虽然我有理,但是,我也挺懒的,不想在来一遍了,想知道怎么配置的盆友可以点击http://www.jianshu.com/p/f10babb8790d,当然你会配置的童鞋,请绕过,不会的呢,你就多费点时间看一看,看完了配置react项目,再来看怎么配置路由的。。。

    一、基本用法

    react-router 安装命令如下:
    $ npm install react-router --save

    当然,你通过这个指令安装的react-router的版本是4.0版本的,因为4.0版本跟以前的版本有一些出入,如果你觉得可能会出现问题我们可以安装指定的版本,通过下面的指令制定安装react-router 3.0版本如下:
    npm install react-router@3 --save

    使用时,路由器Router就是React的一个组件。

    import { Router } from 'react-router';
    render(<Router/>, document.getElementById('app'));
    

    Router组件本身只是一个容器,真正的我们使用路由时候要通过Route组件定义。

    import { Router, Route, hashHistory } from 'react-router';
    
    render((
      <Router history={hashHistory}>
        <Route path="/" component={App}/>
      </Router>
    ), document.getElementById('app'));
    

    上面代码中,用户访问根路由/(比如http://www.example.com/),组件APP就会加载到document.getElementById('app')
    你可能还注意到,Router组件有一个参数history,它的值用hashHistory表示,路由的切换由URL的hash变化决定,即URL的#部分发生变化。举例来说,用户访问http://www.example.com/,实际会看到的是http://www.example.com/#/

    Route组件定义了URL路径与组件的对应关系。你可以同时使用多个Route组件。

    <Router history={hashHistory}>
      <Route path="/" component={App}/>
      <Route path="/repos" component={Repos}/>
      <Route path="/about" component={About}/>
    </Router>
    

    上面代码中,用户访问/repos(比如http://localhost:8080/#/repos)时,加载Repos组件;访问/abouthttp://localhost:8080/#/about)时,加载About组件。

    3. 代码实现

    首先呢,怎么配置的文件,我是真的不说了,你不知道怎么配置的就去看我上一篇的文章吧!!!好,开始!!!

    一、index.html

    其实,index.html页面没多少东西,他的主要作用就是相当于一个容器,把我们写好的组件渲染到我们的容器里。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>React Hello World</title>
    </head>
    <body>
        <div id = "app"></div>
        <script type="text/javascript" src = "index.js"></script>
    </body>
    </html>
    
    二、main.jsx

    是不是应用到我们在上面说的那些东西

    import React from 'react'
    import { render } from 'react-dom'
    import { Router, Route, hashHistory } from 'react-router'
    import App from './modules/App'
    import About from './modules/About'
    import Repos from './modules/Repos'
    
    render((
      <Router history={hashHistory}>
        <Route path="/" component={App}></Route>
        <Route path="/repos" component={Repos}></Route>
        <Route path="/about" component={About}></Route>
      </Router>
    ), document.getElementById('app'))
    
    三、modules文件以及下面的文件

    因为我们想看一下在网址发生改变的时候,内容是不是相应的发生改变,所以建立一个modules文件,


    3239FF7E-CEC8-49E1-A129-534C198693E4.png

    About.js文件

    import React from 'react';
    
    class About extends React.Component {
      render() {
        return <div>About</div>
      }
    }
    export default About;
    

    Repos.js文件

    import React from 'react';
    
    class Repos extends React.Component {
      render() {
        return <div>Repos</div>
      }
    }
    export default Repos;
    

    App.js

    
    import React from 'react';
    
    class App extends React.Component {
      render() {
        return <div>Hello, React Router!</div>
      }
    }
    export default App;
    
    四、看一下代码渲染之后的效果

    这里还必须得说一句,你如果看了我写的上一篇文章,那么你会发现其实改的东西不多,就是添加一个modules文件夹,还有就是安装一下react-router这个路由。

    好了,废话不说了,看效果


    GIF.gif
    五、点击切换路由

    上面的代码几乎不怎么改变,改变的主要是App.js文件,其他的文件不用改变,看代码

    import React from 'react'
    import { Link } from 'react-router'
    class App extends React.Component{
      render() {
        return (
          <div>
            <h1>React Router learning</h1>
            <ul role="nav">
              <li><Link to="/about">About</Link></li>
              <li><Link to="/repos">Repos</Link></li>
            </ul>
          </div>
        )
      }
    }
    
    export default App;
    

    在这里我告诉你一个秘密,Link类似于之前用过的<a/>标签,估计你就有点懵懵懂懂的感觉了。。。

    六、看一下点击实现路由切换的效果

    这里呢,就不废话了,有图有真像。。。


    GIF.gif

    4. 结束语

    好了,react-router就写着么多吧,希望我写的东西,能够给正在学习react的同学一点帮助!!!可以点赞,分享!

    相关文章

      网友评论

      • 妄自:大大能不能吧demo地址贴上哈
        旧丶时候:@妄自 我没代码了,找不到了。没有在github贴代码
        妄自:@旧丶时候 ??????
        旧丶时候:@妄自 😂
      • 木子tar:非常感谢你的分享,写的很透彻,通俗易懂,不过你这样的做法的话会整个页面都跳转过去了,我想请教下,有没有那种局部显示router组件的方法,类似于Vue的那个router-view这样的方式
        木子tar:@Mr_森哥 刚看了下,这是个非常好的东西,又要花时间琢磨下了,感谢分享:heart_eyes:
        旧丶时候:@木子tar 如果是局部的跳转,类似于tab切换么?如果是类似于tab切换,给你提供一个网址https://ant.design/components/tabs-cn/:blush:
      • 旧丶时候:坐🐶🐶🐶

      本文标题:react-router实现路由跳转

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