热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

React学习笔记PartV

文章目录ReactP81-100P81switch的使用P82解决样式丢失问题P83路由的模糊匹配和严格匹配P84redirect的使用P85嵌套路由P86向路由组件传递param

文章目录

  • React
    • P81-100
      • P81 switch的使用
      • P82 解决样式丢失问题
      • P83 路由的模糊匹配和严格匹配
      • P84 redirect的使用
      • P85 嵌套路由
      • P86 向路由组件传递params参数数据
      • P87 向路由组件传递search参数
      • P88 向路由组件传递state参数
      • P89 总结路由参数
      • P90 路由跳转的两种模式
      • P91 编程式路由导航
      • P92 withRouter的使用
      • P93 BrowserRouter和HashRouter
      • P94 UI组件库
      • P95 按需引入样式
      • P96 主题
      • P97 redux


React

b站课程链接跳转

ps: written by Winter-prince

学习前端React做的笔记,供以后复习使用。关键代码基本上都有截图和文字说明,有些部分可能由于内容比较简单没有记录,点击上方课程链接即可跳转前往课程查看详情,关于React的笔记一共有5篇博客,如果需要查看完整内容的请前往专栏查看

我的github:Winter-prince

P81-100


P81 switch的使用

一个路径对应一个组件

在这里插入图片描述

如果不使用switch,那么匹配成功之后还会继续向下匹配。

如果使用了switch,那么匹配成功之后就不会再继续向下匹配了。

P82 解决样式丢失问题

多级路径问题

  1. public/index.html中引入样式时不写./ 写 / (常用)
  2. public/index.html中引入样式时不写./写 %PUBLIC_URL%( 常用)
  3. 使用HashRouter

P83 路由的模糊匹配和严格匹配

1.默认使用的是模糊匹配(简单记:[输入的路径]必须包含要[匹配的路径],且顺序要-致)
2.开启严格匹配:
3.严格匹配不要随便开启,需要再开,有些时候开启会导致无法继续匹配二级路由

模糊匹配

在这里插入图片描述

精准匹配

exact=true、exact

<Switch><Route exact&#61;{true} path&#61;"/about" component&#61;{About} /><Route exact&#61;{true} path&#61;"/home" component&#61;{Home} />
Switch>;

或者

<Switch><Route exact path&#61;" /about" component&#61;{About} /><Route exact path&#61;"/home" component&#61;{Home} />
Switch>;

P84 redirect的使用

兜底&#xff0c;当所有的路由都没有匹配上就使用redirect

import {Route , Switch, Redirect} from &#39;react-router-dom&#39;

<Switch><Route path&#61;" / about" component&#61;{About} /><Route path&#61;" /home" component&#61;{Home} /><Redirect to&#61;"/about" />
Switch>;

P85 嵌套路由

一级

<div className&#61;"panel- body"><Switch>{/*注册路由*/}<Route path&#61;" /about" component&#61;{About} /><Route path&#61;"/home" component&#61;{Home} /><Redirect to&#61;"/about" />Switch>
div>;

二级

<Switch><Route path&#61;"/home/news" component&#61;{News} /><Route path&#61;"/home/message" component&#61;{Message} /><Redirect to&#61;"/home/news" />
Switch>;

总结

1.注册子路由时要写上父路由的path值

2.路由的匹配是按照注册路由的顺序进行的


P86 向路由组件传递params参数数据

在这里插入图片描述

总结

向路由组件传递参数

params参数

路由链接(携带参数): 详情

注册路由(声明接收):

接收参数:

const {id,title} &#61; this . props . match. params


P87 向路由组件传递search参数

{/*向路由组件传速search参数*/}
<Link to&#61;{&#96;/home/message/detail/?id&#61;${msgObj.id}&title&#61;${msgObj.title}&#96;}>{msgObj.title}</Link>

内置querystring

import qs from "querystring";
let obj &#61; { name: "tom", age: 18 }; //name&#61;tom&age&#61;18”. key&#61;value&key&#61;value
console.log(qs.stringify(obj));
let str &#61; "carName&#61;奔驰&price&#61;199";
console.log(qs.parse(str));

代码实现

在这里插入图片描述

总结
search参数

路由链接(携带参数): 详情

注册路由(无需声明&#xff0c;正常注册即可):

接收参数: this . props. location. search

备注:获取到的search是urlencoded编码字符串&#xff0c;需要借助querystring解析


P88 向路由组件传递state参数

state在地址栏是隐藏的

这个state和组件state没有任何关系

传参

在这里插入图片描述

注册路由

{/* state参数无需声明接收&#xff0c;正常注册路由即可*/}
<Route path&#61;"/home/message/detail" component&#61;{Detail}/>

接收参数

在这里插入图片描述

总结

state参数

路由链接(携带参数): 详情

注册路由(无需声明&#xff0c;正常注册即可):

接收参数: this . props .location. state

备注:刷新也可以保留住参数


P89 总结路由参数

P90 路由跳转的两种模式

push和replace

push压栈&#xff0c;留下痕迹

replace替换&#xff0c;不留下痕迹

默认为push&#xff0c;设置参数replace为true&#xff0c;则设置为replace模式

在这里插入图片描述

P91 编程式路由导航

使用props.history.replace方法实现replace路由跳转

使用props.history.push方法实现push路由跳转

replaceShow &#61; (id, title) &#61;> {
// replace跳转 &#43; 携带params参数;this.props.history.replace(&#96;/home/message/detail/${id}/${title}&#96;);
// replace跳转 &#43; 携带search参数;this.props.history.replace(&#96;/home/message/detail?id&#61;${id}&title&#61;${title}&#96;);
// replace跳转 &#43; 携带state参数;this.props.history.replace(&#96;/home/message/detail&#96;, { id, title });
};
pushShow &#61; (id, title) &#61;> {
// push跳转 &#43; 携带params参数;this.props.history.push(&#96;/home/message/detail/${id}/${title}&#96;);
// push跳转 &#43; 携带search参数;this.props.history.push(&#96;/home/message/detail?id&#61;${id}&title&#61;${title}&#96;);
// push跳转 &#43; 携带state参数;this.props.history.push(&#96;/home/message/detail&#96;, { id, title });
};

功能

在这里插入图片描述

P92 withRouter的使用

在这里插入图片描述

react默认只有路由组件才有history

一般组件想要有history&#xff0c;需要用withRouter加工

在这里插入图片描述

withRouter的返回值是一个新组件

P93 BrowserRouter和HashRouter

十三、BrowserRouter与HashRouter的区别

1.底层原理不一样:

BrowserRouter使用的是H5的history API,不兼容IE9及以下版本。

HashRouter使用的是URL的哈希值。

2.path表现形式不一样

BrowserRouter的路径中没有#,例如: localhost ; 3000/ demo/test

HashRouter的路径包含#,例如: localhost :3000/ #/demo/test

3.刷新后对路由state参数的影响

(1) . BrowserRouter没有任何影响&#xff0c;因为state保存在history对象中。

(2) . HashRouter刷新后会导致路由state参数的丢失。

4.备注: HashRouter可以用于解决一些路径错 误相关的问题。


P94 UI组件库

angular react vue

material-ui

element ui for react

P95 按需引入样式


P96 主题

antd less 编译

P97 redux

前面绝大多数的基础部分已经更新完了。


推荐阅读
  • vue使用
    关键词: ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了一种求解最小权匹配问题的方法,使用了拆点和KM算法。通过将机器拆成多个点,表示加工的顺序,然后使用KM算法求解最小权匹配,得到最优解。文章给出了具体的代码实现,并提供了一篇题解作为参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
author-avatar
殇子休
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有