React中的路由react-router
Router 的基本使用!
我们需要npm 下载react-router:
npm install react-router --save
BrowserRouter或HashRouter
- Router中包含了对路径改变的监听,并且会将相应的路径传递给子组件;
- BrowserRouter使用history模式;
- HashRouter使用hash模式;
Link和NavLink
- 通常路径的跳转是使用Link组件,最终会被渲染成a元素;
- 是在Link基础上增加了一些样式属性;
- Link中最重要的属性,用于设置跳转到的路径;
Route
- Route用于路径的匹配;
- path属性:用于设置匹配到的路径;
- element属性:设置匹配到路径后,渲染的组件;
- exact:精准匹配,只有精准匹配到完全一致的路径,才会渲染对应的组件;
创建第一个路由:
要使用react-router 创建第一个路由 首先我们需要在 总入口文件里引入:
import { BrowserRouter } from 'react-router-dom' //引入react-router-dom模块包 包裹根目录AppReactDOM.render(<React.StrictMode><BrowserRouter><App /></BrowserRouter></React.StrictMode>,document.getElementById('root')
);
这是从 react-router-dom 库导入的第一个组件。它用于包装不同的路线,它使用HTML5 history API来跟踪React应用程序中的路由历史记录。
之后我们在 App.js 文件里 引用该下列方法:
我们需要 使用Routes 包裹住Route 来注册路由
Route 里面path属性是路径,element是该路径所对应的组件。
//引入Routes包裹Route Route设置路由 Link跳转路径,相当于a标签
import { Routes, Route, Link, NavLink } from 'react-router-dom'function App() {return (<div className="App"><Routes>{/* 通过定义route内的path和element,确定每一个路径path对应的组件element */}<Route path='/' element={<Home />} /<Route path='/newone' element={<Newone />} />{/* 如果路径地址不存在的话 */}<Route path='*' element={<NotFound />} /><Route path='/about' element={<About />}>{/* 默认路由 */}<Route path='' element={<Dz />} />{/* 二级路由 about的子路由 */}<Route path='/about/address' element={<Dz />} /><Route path='/about/yhq' element={<Yhq />} />{/* 如果路径地址不存在的话 */}<Route path='*' element={<NotFound />} /></Route></Routes></div>);
}export default App;
下面使用 NavLink 进行一个跳转 相当于a标签:
<NavLink to="/">首页</NavLink>
<NavLink to="/about">about页</NavLink>
跳转路由:
当然,我们也可以跳转路由,但是我们react 不想vue那样使用 push,go,replace进行一个跳转;
我们需要 引入 useNavigate 方法,注意 我们这里使用这些api方法,必须在函数式组件内使用;
请看以下代码片段:
//跳转路由
import { useNavigate } from 'react-router-dom'function Home() {//使用引入的useNavigate方法 声明一个对象let navigate = useNavigate()return (<div>我是home组件{/* 跳转路由的按钮 */}<input type="button" value="跳转about组件" onClick={() => { navigate('/about') }} /></div>)}
export default Home;
React中的路由react-router相关推荐
- 25、react 中使用路由 router 详解
react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...
- react中函数式组件React Hooks
React Hooks 函数式组件 使用hooks理由 高阶组件为了复用,导致代码层级复杂 生命周期的复杂 写成functional组件,无状态组件,因为需要状态,又改成了class,成本高 在16. ...
- react中html转换,React中的HTML转义写法
在JSX中输出固定内容 直接使用UTF-8字符 {代码...} 使用HTML转义字符 {代码...} 或者十进制的转义字符 {代码...} 动态内容的转义 但是如果在外面加一层大括号的话,react为 ...
- React动画和路由
1.过渡动画 React并没有提供过渡动画操作,组件的过渡动画需要依赖第三方模块:transition 安装 yarn add react-transition-group 单元素过渡动画 impor ...
- React中添加class——借助第三方库classnames
一.vue中添加class vue中添加class是一件非常简单的事情: 你可以通过传入一个对象: 你也可以传入一个数组: 甚至是对象和数组混合使用: 二.React中添加class React在JS ...
- React中diff算法的理解
React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...
- React 中constructor 作用
React 中constructor 作用 react中的constructor大体有两个作用 1.初始化this.state 2.纠正方法的this的指向 constructor(props) {s ...
- React学习(十)-React中编写样式CSS(styled-components)
虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 VX-ID:suibichuanji 点 ...
- React学习(九)-React中发送Ajax请求以及Mock数据
虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 VX-ID:suibichuanji 点 ...
最新文章
- boost::polygon模块实现多边形间隔相关的测试程序
- 利用SharedPreferences完成记住账号密码的功能
- HttpClient 4 API –获取状态码-getStatusLine()。getStatusCode()示例
- linux查看openssh和openssl版本命令
- python 字符串首字母_如何将string(Python)中每个单词的首字母大写?
- 【ACDU推荐好文】手把手教你 DBCA 搭建 Oracle ADG
- 将一个类改成线程_看了这个有趣的例子,相信你就秒懂多线程同步了
- 异常处理第一讲(SEH),筛选器异常,以及__asm的扩展,寄存器注入简介
- 自然数之和(leetcode 167)
- js读取json数据(php传值给js)
- java txt转pdf乱码_java转pdf中文乱码应该如何处理
- 对LFW数据库的翻译【1】
- 计算机专业复试面试题难吗,计算机考研复试,别想的太难了!
- 使用pdfFactory Pro虚拟打印机给文档加上水印
- 欢迎使用CSDN-markdown编辑器11345
- 7款英文语法检查工具推荐
- excel合并sheet表格
- 怎么把文件发给商家打印?如何给商家发送需打印的文件
- 【CVPR 2021】树状决策知识蒸馏:Tree-like Decision Distillation
- js实现表单及时验证功能 用户信息立即验证
热门文章
- 残缺棋盘的伪代码_伪激光雷达:无人驾驶的立体视觉
- word置顶_小鱼便签怎么设置置顶
- java web 使用https_如何在Web应用程序中实现HTTPS登录页面?
- linux 新增网络接口,为网络接口添加多IP - CentOS 7系统配置上的变化解析_Linux教程_Linux公社-Linux系统门户网站...
- 图说数据中心新风节能技术
- 为什么要完成量子计算机,我们为啥要量子计算机?
- linux文件拷贝函数,linux:文件操作函数(open,close,read,write)
- Algorithm:【Algorithm算法进阶之路】之数据结构二十多种算法演示
- Arrays中sort部分源码阅读
- 为CDH 5.7集群添加Kerberos身份验证及Sentry权限控制