热门标签 | 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

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


推荐阅读
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
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社区 版权所有