React中路由的基本使用

1、React路由介绍

 现在我们来搞一搞React中的路由吧,别问我为什么这木喜欢用搞这个字,因为它比较深奥。

注意下面我们使用的是React-Router-DOM

React中的路由基本使用还是满简单的,零碎的小东西有点多,所以我直接把他们揉到一起做了一个小例子,代码我都写上注释了,应该挺简单易懂的

注意:以下所有操作均运行在搭好的React环境中

2、安装react-router-dom

在项目命令行中,执行cnpm install react-router-dom -S下载到生产环境的依赖中。

在组件中通过对象的解构方式去获取到react-router-dom内置组件,在     组件中,按需引入内置组件,在页面中进行使用:

3、关于组件的区别

 HashRouter表示一个路由的根容器,将来所有的路由相关的东西,都要包裹在HashRouter里面,而且一个网站中,只需要使用一次HashRouter就好了;

Route表示一个路由规则,在Route上,有两个比较重要的属性,path,component

Link则表示一个路由的链接

4、仿照官网来个小案例(声明式路由)

   4.1、创建一个新的Baokuo.js文件,并在index.js中导入这个路由文件

    4.2、创建好要跳转的页面

     4.3、在Baokuo.js文件中粘贴官方的第一个路由案例;

 1 import React from ‘react‘
 2 import Home from ‘./penter/Home‘   //因为在一个文件夹下面创建的,所以要找到准确位置。
 3 import Text from ‘./penter/Text‘
 4 import Hellow from ‘./penter/Hellow‘
 5 import {BrowserRouter,HashRouter,Route,Link} from ‘react-router-dom‘
 6 import {Button,DatePicker,Icon} from ‘antd‘;
 7 import ‘antd/dist/antd.css‘
 8
 9 class Baokuo extends React.Component{
10
11     render(){
12
13         return (
14                 // 根容器
15                 <HashRouter>
16                 <div>
17                     <h1>这是根目录</h1>
18                     <hr/>
19                     {/* 链接 */}
20                    <Link to="/home">首页</Link>&nbsp;&nbsp;
21                    <Link to="/text">新闻</Link>&nbsp;&nbsp;
22                    <Link to="/hellow">关于我们</Link>
23                     <hr/>
24                     {/* 路由规则,Route是配置路由的规则,同时也是一个占位符 */}
25                     <Route path="/home" component={Home} />
26                     <hr/>
27                     <Route path="/text"  component={Text}></Route>
28                     <hr/>
29                     <Route path="/hellow" component={Hellow}></Route>
30                 </div>
31                 {/* <DatePicker></DatePicker><Button type="primary" icon="twitter">点击</Button> */}
32                 </HashRouter>
33         );
34     }
35 }
36
37 export default Baokuo;
1 总体的步骤分为三步:
2 配置路由的容器Router;
3 配置路由的连接LInk;
4 配置路由填充的位置以及路径和组件的映射关系;:

5、嵌套路由

详细可见https://blog.csdn.net/xiaodi520520/article/details/93336215 讲解的比较清楚

5.1、嵌套路由的步骤

a.在父路由的组件中配置子路由;

b.子路由中同样需要配置Link和Route;

6、带参数路由和获取参数;

方式:在路由的路径中通过[:参数名称]来进行传递,改参数在路由匹配的组件中通过[match.params.参数名]来获取。
英文官网案例:

原文地址:https://www.cnblogs.com/haiyang-/p/12096802.html

时间: 2024-10-10 13:18:26

React中路由的基本使用的相关文章

整理下react中常见的坑

其实有些也不能算是坑,有些是react的规定,或者是react的模式和平常的js处理的方式不同罢了 1.setState()是异步的this.setState()会调用render方法,但并不会立即改变state的值,state是在render方法中赋值的.所以执行this.setState()后立即获取state的值是不变的.同样的直接赋值state并不会出发更新,因为没有调用render函数. 2.组件的生命周期componentWillMount,componentDidMount 只有在

如何实现 React 中的状态自动保存?

什么是状态保存? 假设有下述场景: 移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个位置,用户看到了感兴趣的项目,点击查看其详情,进入详情页,从详情页退回列表页时,需要停留在离开列表页时的浏览位置上 类似的数据或场景还有已填写但未提交的表单.管理系统中可切换和可关闭的功能标签等,这类数据随着用户交互逐渐变化或增长,这里理解为状态,在交互过程中,因为某些原因需要临时离开交互场景,则需要对状态进行保存 在 Reac

React中setState同步更新策略

本文和大家分享的主要是React中setState同步更新相关内容,希望对大家学习React有所帮助. 为了提高性能React将setState设置为批次更新,即是异步操作函数,并不能以顺序控制流的方式设置某些事件,我们也不能依赖于 this.state 来计算未来状态.典型的譬如我们希望在从服务端抓取数据并且渲染到界面之后,再隐藏加载进度条或者外部加载提示: componentDidMount() { fetch('https://example.com') .then((res) => re

react中为什么要使用immutable

因为在react中,react的生命周期中的setState()之后的shouldComponentUpdate()阶段默认返回true,所以会造成本组件和子组件的多余的render,重新生成virtual dom,并进行virtual dom diff,所以解决办法是我们在本组件或者子组件中的shouldComponentUpdate()函数中比较,当不需要render时,不render. 当state中的值是对象时,我们必须使用深拷贝和深比较! 如果不进行深拷贝后再setState,会造成t

Immutable学习及 React 中的实践

为什么用immutable.js呢.有了immutable.js可以大大提升react的性能. JavaScript 中的对象一般是可变的(Mutable),因为使用了引用赋值,新的对象简单的引用了原始对象,改变新的对象将影响到原始对象.如 foo={a: 1}; bar=foo; bar.a=2 你会发现此时 foo.a 也被改成了 2.虽然这样做可以节约内存,但当应用复杂后,这就造成了非常大的隐患,Mutable 带来的优点变得得不偿失.为了解决这个问题,一般的做法是使用 shallowCo

深入理解react中的虚拟DOM、diff算法

文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 React中的虚拟DOM与Vue中的虚拟DOM比较 React中的虚拟DOM是什么?   虽然React中的虚拟DOM很好用,但是这是一个无心插柳的结果.   React的核心思想:一个Component拯救世界,忘掉烦恼,从此不再操心界面. 1. Virtual Dom快,有两个前提 1.1 Javascript很快  Chrome刚出来的时候,在Chrome里跑Javascript非

在react中使用intro.js的的一些经验

react逐渐热了起来,但是新的东西毕竟前辈的经验少一些,前段时间自己在react中用到intro.js时,得到的资料甚少,摸索后便将一些心得记录下来了~ 1 intro.js的引入,这一点请看上一篇博文关于如何在react中引入文件 2 在需要的页面引入文件后, 可以给intro.js的出发点绑定函数 showIntrojs(){ introJs().start(); } 这样intro.js就可以在页面发挥作用了~ 3 intro.js只会对整个组件起作用,并且要在组件外面添加一层父元素(d

React中key的作用

对于React中key的作用,官方没有给出详细的解读,只提到在List中需要给key赋值来区分每一条记录,http://blog.csdn.net/code_for_free/article/details/50514259里讲解了key的使用场景, http://taobaofed.org/blog/2016/08/24/react-key/从三方面讲了List组件中key存在的原因和List之外使用key作为trick简化代码逻辑,本文以List中新增元素为例,从List子组件生命周期函数的

React中,map出来的元素添加事件无法使用

在使用react中,经常用到react的map函数,用法和jquery里中的map一样,但是,如果你在每个map出来的元素中添加,你会发觉添加的事件无法关联, 比如,我们很多的评论,我需要在每个评论下面加一个回复的input,input期初是隐藏的,当我点击每天评论下面的回复时,input输入框显示 这里举个例子,比如我数组里有三组文字,我把它们渲染到li中,点击每个li,alert()出每个li里面的内容,按照下面的方法,你会发觉出错,无法显示 var myTest = React.creat