React进阶(Redux,RTK,dispatch,devtools)

1、初识Redux

是React最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行

作用:通过集中管理的方式管理应用的状态

案例-实现一个计数器

实现步骤:

Redux管理数据的流程:

state:一个对象,存放管理的数据状态

action:一个对象,描述怎么操作数据

reducer:一个函数,根据action的描述生成一个新的state

2、配套工具:

(1)安装两个插件,Redux Toolkit和react-redux

Redux Toolkit:编写Reducx的逻辑的方式,是一套工具的合集,简化书写方式

react-redux:用=用来链接Reducx和React的中间件

配置基础环境:

3、使用Redux Toolkit创建counterStore

4、React组件中使用store中的数据

使用钩子函数-useSelector

修改数据,通过useDispatch

得到要提交的action对象:执行store模块中导出的actionCreater方法

5、提提交action参数

在reducer的同步修改方法中添加action对象参数,在调用actionCreater方法的时候传递参数,参数会被传递到action对象的playload属性上。

6、异步状态操作

1)创建store的同时配置修改状态的方法

2)单独封装一个函数,在函数内部return一个新韩淑,在新函数中

(1)封装异步请求获取数据

(2)调用同步actionCreater传入异步数据会生成一个action对象,并使用dispatch提交

3)组件中dispatch的写法保持一致

7、Redux调试:插件devtools

(更多工具-扩展程序(自行安装)),安装好之后,当程序检测到react相关代码时,顶部会有redux的工具栏

8、案例-美团外卖(由于该项目就是基本的一些数据渲染和逻辑实现,没有出现一些很棘手的问题,因此在这里只提供大概思路,代码不再演示)

环境准备:首先,去github克隆项目

其次,安装所有依赖:npm i

紧接着,启动mock服务(提供接口):npm run serve

最后,启动前端服务:npm run start

第一部分:分类和商品列表渲染

实现步骤:

1)启动项目(mock服务和前端服务)

2)使用PTK编写store(异步action)

3)组件触发action并且渲染数据

第二部分:点击分类激活交互实现

Tab切换类交互:

需求分析:

1)记录当前点击项(activeIndex)

2)动态控制激活类名(activeIndex===index)

实现步骤:

1)使用RTK编写管理activeIndex

2)组件中点击时触发action更改activeIndex

3)动态控制激活类名显示

第三部分:商品列表切换展示

和左边tab切换部分共享activeIndex

第四部分:添加购物车

实现步骤:

1)使用RTK管理新状态cartList

2)判断购物车中是否已经添加过商品?是:更新count,否:直接push进去

3)组件中点击时接收数据提交action添加购物车

怎么判断是否添加过?以action.payload.id去cartList中去找,如果匹配到,返回找到的对象,在item.count上+1

第五部分:统计区

需求分析:

1)购物车数量和总计统计

2)高亮功能实现

实现步骤:

1)基于store中的cartList的length渲染数据

2)基于store中的cartList计算价格price*count(使用reduce求和)

3)购物车cartList的length不为0则高亮

第五部分:购物车列表

需求分析:

1)控制列表渲染

2)购物车增减逻辑实现

3)清空购物车实现

实现步骤:

1)使用cartList遍历渲染列表

2)RTK中编写增减reducer,组件中提交action

3)RTK中增加清除购物车reducer,组件中提交action

注意:购物车商品数量不能为0,加一个判断,如果为0,直接终止程序不再往下走,

第六部分:控制购物车显示和隐藏

需求分析:

1)点击统计区域时,购物车列表显示

2)点击蒙层区域时,购物车隐藏

实现步骤:

1)使用useState声明控制显示隐藏的状态

2)点击统计区域时设置状态为true

3)点击蒙层区域设置状态为false

本文主要详细介绍了react中常用的状态管理工具,并且通过一个外卖平台的小案例来将理论知识应用到实际项目中,代码逻辑都很简单,在这里不予赘述,只总结分享理论层面的知识,有需要代码者可以私信我获取,今天的文章就到这儿啦,我们下期间~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453944.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学生时期学习资源同步-1 第一学期结业考试题4

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载

华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)

第161题 以下关于IPv6优势的描述,正确的是哪些项? A、底层自身携带安全特性 B、加入了对自动配置地址的支持,能够无状态自动配置地址 C、路由表相比IPv4会更大,寻址更加精确 D、头部格式灵活,具有多个扩展头 【参考答案】ABD 【答案解析】 第162题 在OSPF视图下使用Filt…

WPF —— Calendar日历控件详解

1: Calendar的简介 日历控件用于创建可视日历,让用户选择日期并在选择日期时触发事件。 DisplayMode 用来调整日历显示模式,分为Month、Year 和Decade 三种。如下是None 2:Calendar控件常用的属性 SelectionMode 选中日历的类…

nginx学习记录-nginx初步配置

1. 虚拟机安装系统并配置网络 系统网上找个能用的镜像就行,我用的是阿里的镜像,地址是centos安装包下载_开源镜像站-阿里云 (aliyun.com) 以下是我本地的虚拟机配置 配置过程中按照提示操作系统即可。 安装好系统后,配置centos的ip&#x…

Ribbon简单使用

Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端实现负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后…

LiveGBS流媒体服务器中海康摄像头GB28181公网语音对讲、语音喊话的配置

LiveGBS海康摄像头国标语音对讲大华摄像头国标语音对讲GB28181语音对讲需要的设备及服务准备 1、背景2、准备2.1、服务端必备条件(注意)2.2、准备语音对讲设备2.2.1、不支持跨网对讲示例2.2.2、 支持跨网对讲示例 3、开启音频开始对讲4、搭建GB28181视频…

C++提高笔记(三)---STL容器(vector、deque)

1、vector容器 1.1vector基本概念 功能:vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展:并不是在原空间之后续接新空间&#xff0…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么? ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案,它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

Pytorch实战01——CIAR10数据集

目录 1、model.py文件 (预训练的模型) 2、train.py文件(会产生训练好的.th文件) 3、predict.py文件(预测文件) 4、结果展示: 1、model.py文件 (预训练的模型) impor…

QGIS 开发之旅二《构建插件工程》

上一篇文章写了二次开发环境的构建,这一章我们从零开始构建插件工程,并理解下QIGIS 如何识别插件程序的。 1、创建QGIS 工程 新建项目,选择下面的空工程 工程创建成功后,是下面的样子,没有任何文件 2、配置QGIS工程 …

docker私有仓库-harbor的搭建

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker di…

基于Java (spring-boot)的人才招聘系统

一、项目介绍 公司: IT公司的注册与管理 招聘要求的发布与维护 站内私信 求职者: 招聘需求浏览 招聘需求筛选(按岗位、薪酬、城市、地区等) 简历编辑,建立投递等 站内私信 管理员: 用户信息维护 岗…

vue学习笔记24-组件事件配合v-model使用

搜索时v-model绑定的search数据时时发生变化 watch侦听器时时监察变化&#xff0c;一旦数据发生变化 &#xff0c;就实时发送数据给父组件 子组件的完整代码&#xff1a; <template>搜索&#xff1a;<input type"text" v-model"search"> <…

数学建模【时间序列】

一、时间序列简介 时间序列也称动态序列&#xff0c;是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分&#xff0c;分别是描述过去、分析规律和预测未来&#xff0c;本篇将主要介绍时间序列分析中常用的三种模型&#xff1a;季节分解…

通过对话式人工智能实现个性化用户体验

智能交流新时代&#xff1a;如何选择对话式人工智能产品 在快速发展的数字环境中&#xff0c;对话式人工智能正在彻底改变企业与客户互动的方式。 通过集成机器学习、自然语言处理和语音识别等先进技术&#xff0c;对话式人工智能可提供个性化、无缝的用户体验。 了解对话式人…

数字工厂环境中3D开发工具HOOPS的应用及其价值

随着新一代工业技术的推进&#xff0c;数字工厂的理念逐渐被企业所接受和推广。其中&#xff0c;HOOPS技术平台在数字工厂的设定和运营中扮演了重要的角色&#xff0c;其应用带来了诸多优势。 HOOPS技术平台包含HOOPS Visualize, HOOPS Exchange和HOOPS Communicator等强大工具…

代码随想录day19(2)二叉树:二叉树的最大深度(leetcode104)

题目要求&#xff1a;求出二叉树的最大深度 思路&#xff1a;首先要区分二叉树的高度与深度。二叉树的高度是任一结点到叶子结点的距离&#xff0c;而二叉树的深度指的是任一节点到根节点的距离&#xff08;从1开始&#xff09;。所以求高度使用后序遍历&#xff08;从下往上&…

自动化测试系列-Selenium三种等待详解

第一种也是最简单粗暴的一种办法就是强制等待sleep(time)&#xff0c;强制让程序等time秒时间&#xff0c;不管程序能不能跟上速度&#xff0c;还是已经提前到了&#xff0c;都必须等time时长。 如下代码案例所示: from selenium import webdriverfrom time import sleepdriv…

软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?

Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤&#xff1a; 1、在pytest配置文件&#xff08;conftest.py&#xff09;中&#xff0c;定义一个日志输出路径&#xff0c;并设置logging模块。 import loggi…

【PLC】现场总线和工业以太网汇总

1、 现场总线 1.1 什么是现场总线 1&#xff09;非专业描述&#xff1a; 如下图&#xff1a;“人机界面”一般通过以太网连接“控制器(PLC)”&#xff0c;“控制器(PLC)”通过 “现场总线”和现场设备连接。 2&#xff09;专业描述&#xff08;维基百科&#xff09; 现场总线…