首先补充一下上个章节的一点结尾内容。reducer是一个纯函数,纯函数指的是当我们在redux里面定义了我们需要共享的对象后,我们是不可以对共享的对象本身进行改变的。我们在获取更新后的共享数据时,要去重新定义一个新的变量来获取更新后的共享数据并且返回,这样就可以拿到加工(更新后的数据了)。

             还有当我们的项目代码写完之后,往往需要上线到生成环境,我们需要项目打包,运行命令npm run build打包到build文件夹,这时候如果我们想要运行build文件夹,查看我们的代码是否正常运行,需要安装server相关的库,npm install serve -g 然后可以通过serve build直接在build文件夹下部署服务器运行,这样就可以查看打包后的项目是否正常运行了。

        回归正题。

    1.setState

                         

             我们更新状态页面渲染出来了1,但是控制台却是0?调用setState改状态,调用之后react改状态,setState是一个同步方法,不会等待,但是setState引起的react后续更新状态是异步的async,也就是说React的状态更新是异步的。

             

               但是如果我们在第二个参数的地方调用回调函数,这里输出的count就默认为当页面的组件重新渲染完之后,以及状态更新完之后,执行的回调函数输出count,所以是最新的值。

                这种是对象式,还有一种函数式。

                

                可以直接把state和props作为参数拿来用,不需要解构赋值获取什么的,对象式是函数式的一种语法糖(简写)

     2.lazyload

                懒加载,一般在项目中如果项目多组件多,就需要懒加载,用的时候加载。不用的时候不加载。

                

  

             写法是首先引入lazy方法从react中,然后const About = lazy(()=>{return(import('./About'))}),这样就可以定义About作为一个懒加载组件,当切换到这个路径的时候,才会引入About组件进行渲染。但是如果我们现在注册的路由都是懒加载,那么就需要在我们加载的时候去显示一下内容,可以是虚拟Dom也可以是一个普通的组件。

               这时候引入Suspense方法,用法如上,关键是fallback属性,当包裹的路由组件都是懒加载的时候,fallback需要去指定一个加载中显示的内容,这些都是必要的写法。

      3.Hook

              我之前学的类组件有生命周期,以及this实例里面包含非常多的react带的api可以直接使用,以及props,state,ref进行数据的传输,函数组件只能props,而且没有实例对象。现在函数组件也可以这样使用state,以及react的api。通过hook。

            1.state hook

                        

              

        这是类组件的点击加数字效果。我们用this实例中的state,在this实例中添加函数,以及this实例自带的setState等等,直接通过extens Component继承直接拿来用。

        下面是函数组件点击加数字效果。、

        

        在函数组件通过数组结构的方式从React.useState(0)获取一个初始化的state以及对应的更新state的方法,比如这里是count以及setCount,我们通过直接使用setCount((count)=>{(count+1)})这种方式去更新state。而且只要更新了count,就会自动的重新渲染页面。

        为什么每次count更新重新调用Demo组件为什么const count初始化0没有执行呢,因为当第一次初始化的时候react底层帮我们保存了count作为缓存,不会被再次初始化。

        2.effect hook

                我们类组件有生命周期,我们通过生命周期来执行一些特殊时期下的函数。在函数组件内就需要用到React.useEffect(()=>{},[])这个方法。

                

                

          直接用生命周期componentDidMount然后计时器更新,这里用的函数式,对象式会形成函数闭包永远在作用域拿到count=0,导致一直输出的是1。(对象式是注释掉的代码)

        然后我们用componentWillUnmount关闭定时器在卸载前,点击事件点击清除所有组件。

        下面是函数组件。

        

                

            值得注意的是,当我们用React.useEffect(()=>{},[])后面的数组如果为空,表示没有绑定监听的状态,加载更新页面之后只执行一次,相当于componentDidMount,如果写了或者没有添加数组,就会监听对应的状态或者所以的状态,写了就监听对应的状态state或者直接监听所有的state。比如这里的count。而且如果写成

React.useEffect(()=>{//函数体,Return ()=>{}},[])

        如果又返回一个函数,相当于执行了componentwillunmount组件卸载前执行。

        

        (复习,setTimeout(()=>{},1000)这是一个定时器,在1秒后执行里面的函数

        ---setInterval(()=>{},1000))这也是一个定时器,每经过1秒执行一次函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85793.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85793.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85793.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.获取图片灰度与缩放

目录 一、Halcon 1. 获取像素坐标以及灰度 2. 拖动缩放 3.图像缩放的实现方式 二、VS联合编程 1.获取像素坐标和灰度 2.拖动缩放 一、Halcon 1. 获取像素坐标以及灰度 *1. 获取像素坐标 * 1. get_mposition * 2. halcon窗口事件自带坐标数据 * *2. 获取像素灰度 *…

无人机+AI:革新集装箱箱号识别的智能解决方案

在现代化物流体系中,集装箱箱号识别是货物追踪与管理的核心环节。然而,传统的人工巡检或固定摄像头识别方式存在效率低、覆盖范围有限、易受环境干扰等问题,难以满足日益增长的物流需求。基于无人机与AI技术的集装箱箱号识别系统,…

一种新的参数高效微调方法-LoRI

论文:LoRI: Reducing Cross-Task Interference in Multi-Task Low-Rank Adaptation LoRA 具体参考 1. 引言与背景:为什么需要 LoRI? 这篇论文提出了一种新的参数高效微调(PEFT)方法,名为 LoRA with Reduce…

Go网络编程:基于TCP的网络服务端与客户端

Go 语言的 net 包为网络编程提供了简洁高效的接口。我们可以使用它快速构建 TCP 网络服务,如聊天服务器、RPC、微服务通信等。 一、TCP简介 TCP(Transmission Control Protocol)是面向连接的、可靠的传输协议,通信模型为客户端-服…

【StarRocks系列】架构、核心概念

目录 一、架构:分布式 MPP 列式存储 向量化引擎 二、存储:高性能列式存储引擎 三、表设计:三类模型适配不同场景 四、数据写入:多种方式支持实时与批量 五、数据读取:极致优化的查询引擎 总结:Star…

从源码到生产:Apache 2.4.57 自动化安装实战指南(附脚本)

引言:为何选择源码安装 Apache? 在服务器运维场景中,源码编译安装 Apache HTTP Server 是实现精细化配置的重要方式。相比包管理器安装,源码安装可自定义模块组合、适配特定依赖环境,并精确控制版本。本文将通过自动化…

iOS开发中的安全实践:如何通过Ipa混淆与加固确保应用安全

随着移动应用技术的不断发展,开发者越来越重视应用的安全性,尤其是iOS应用。无论是面对大规模的数据泄露问题,还是在应用上线后避免被逆向破解,开发者们都需要采取一系列技术手段来保护应用。然而,很多开发者在应用开发…

JAVA实战开源项目:智慧生活商城系统 (Vue+SpringBoot) 附源码

本文项目编号 T 245 ,文末自助获取源码 \color{red}{T245,文末自助获取源码} T245,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

GNU Octave 基础教程(8):GNU Octave 常用数学函数

目录 一、基本算术运 二、初等数学函数 三、三角函数与反三角函数 四、统计函数 五、复数与其他函数 ✅ 小结 🔜 下一讲预告 GNU Octave 内置了大量数学函数,涵盖初等数学、线性代数、复数运算、统计函数等,非常适合科研、工程计算使用…

Go语言中的文件与IO:JSON、CSV、XML处理

在数据交换与存储中&#xff0c;JSON、CSV、XML 是常见格式。Go 标准库为这些格式提供了强大且易用的支持&#xff0c;涵盖结构体映射、读写文件、编码解码等操作。 一、JSON处理&#xff08;encoding/json&#xff09; 1. 基本使用&#xff1a;结构体 <-> JSON type U…

三种语言写 MCP

参考 https://zhuanlan.zhihu.com/p/1915029704936760261 https://www.5ee.net/archives/tmXJAgWz https://github.com/modelcontextprotocol/python-sdk https://github.com/modelcontextprotocol/typescript-sdk https://modelcontextprotocol.io/quickstart/server https:/…

Python训练营-Day38-Dataset和Dataloader类

在遇到大规模数据集时&#xff0c;显存常常无法一次性存储所有数据&#xff0c;所以需要使用分批训练的方法。为此&#xff0c;PyTorch提供了DataLoader类&#xff0c;该类可以自动将数据集切分为多个批次batch&#xff0c;并支持多线程加载数据。此外&#xff0c;还存在Datase…

SVN上传代码

SVN&#xff08;Subversion&#xff09;是一个常用的版本控制系统&#xff0c;提供了对代码管理和协作的支持。以下是SVN常见操作&#xff08;如获取代码、上传代码、合并冲突处理等&#xff09;的命令行流程及实例&#xff1a; 1. 获取代码&#xff08;Checkout&#xff09; 在…

【appium】2.初始连接脚本配置

连接配置 from appium import webdriver desired_caps {platformName: Android,automationName: UIAutomator2,deviceName: ZTEB880,appPackage: com.taobao.taobao,appActivity: com.taobao.tao.welcome.Welcome,noReset: True }driver webdriver.Remote(http://localhost:…

FliTik翻页时钟v1.1.25.36,支持安卓TV/手机/车机+windows电脑端

FliTik翻页时钟v1.1.25.36&#xff0c;支持安卓TV/手机/车机windows电脑端 FliTik翻页时钟是一款集高颜值与强大功能于一身的全平台数字时钟工具类应用&#xff0c;支持TV、iOS、安卓、PC以及鸿蒙系统。它不仅拥有精美的翻页动画…

以AI赋能创意未来:即梦3.0与Seedance1.0Lite重磅登陆POE!

近年来&#xff0c;随着人工智能技术的不断突破&#xff0c;AI模型的应用场景也在逐渐拓宽。在这一过程中&#xff0c;如何整合和利用现有的AI技术&#xff0c;实现更为便捷的创作服务&#xff0c;成为了许多科技企业关注的焦点。近日&#xff0c;全球知名的AI模型整合平台POE正…

云计算与5G:如何利用5G网络优化云平台的性能

想象一下&#xff0c;你正在用手机看视频、进行在线游戏&#xff0c;甚至是使用云存储来保存你的重要文件。所有这些背后&#xff0c;其实都离不开一个无形的力量——云计算。而今天&#xff0c;5G网络的出现&#xff0c;就像为这些云服务加装了一对翅膀&#xff0c;让它们飞得…

GPT-1 与 BERT 架构

GPT-1 架构特点 仅解码器架构&#xff1a;摈弃了传统transformer中的编码器层&#xff0c;而是直接用解码器和自注意力&#xff0c;同时抛弃掉了交叉多头注意力层&#xff0c;自注意力通过mask来完成计算。注意力块添加到12个&#xff0c;Attention的输出维数为762维&#xff0…

Day04_C语言基础数据结构重点复习笔记20250618

1.什么是计算机的大小端存储&#xff1f; 答&#xff1a;大端是数据的高位字节存储在低地址&#xff0c;低位字节存储在高地址&#xff0c;网络协议&#xff08;如TCP/IP&#xff09;通常采用大端序&#xff08;称为“网络字节序”&#xff09;。例如&#xff1a;32位整数 0x12…

基于OpenSSL实现AES-CBC 128算法的 SeedKey DLL的生成与使用

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…