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

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

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

相关文章

MySQL基础-----多表查询之内外连接与自连接

目录 前言 一、内连接 1.隐式内连接 2.显式内连接 二、外连接 1.左外连接 2.右外连接 三、自连接 1.自连接查询 2.联合查询 前言 本期我们学习MySQL中多表查询的内连接、外连接和自连接。这里我会通过相关的案例去讲解多表查询中的内外连接与自连接的查询方式&#xff…

ARM 汇编指令:(七) STM/LDM多寄存器加载/多存储指令

一.四种栈 考验大家理解能力的地方来了,专心点,嘿嘿!! 1.满增栈:进栈(先移动指针再入栈,指针往地址增大的方向移动);出 栈(先出栈,栈指针往地址…

分享通义ChatGPT实用技能123

前言 作为一名程序员,你一定有过这样的经历:排查某个 bug 花费了好几个小时,在各个搜索引擎尝试搜索,浏览了几十甚至上百个网站,结果搜到的答案千篇一律,没有一个说到点上。而自从有了 ChatGPT&#xff0c…

通过网口或串口走Modbus协议,读写数据库中的数据

智能网关IGT-DSER方便实现多台PLC与数据库之间的数据通讯,既可以读取PLC的数据上报到数据库,也可以从数据库查询数据后写入到PLC的寄存器,还可以将数据库的数据转为Modbus服务端/从站,实现数据库内的数据也可以走Modbus协议通过网…

真空泵系统数据采集远程监控解决方案

行业背景 半导体制造业可以说是现代电子工业的核心产业,广泛应用于计算机、通信、汽车、医疗等领域。而在半导体生产加工过程中,如刻蚀、 镀膜、 扩散、沉积、退火等环节,真空泵都是必不可少的关键设备,它可以构建稳定受控的真空…

SVM实验分析(软硬间隔,线性核,高斯核)

目录 一、前言 二、实验 0. 导入包 1. 支持向量机带来的效果 2. 软硬间隔 3. 非线性支持向量机 4. 核函数变换 线性核 高斯核 对比不同的gamma值对结果的影响 一、前言 学习本文之前要具有SVM支持向量机的理论知识,可以参考支持向量机(Support Vector …

零基础如何学习Web 安全,如何让普通人快速入门网络安全?

前言 网络安全现在是朝阳行业,缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 初级的现在有很多的运维人员转网络安全,初级也会慢慢的卷起来,但是岗位多不用怕,以后各大厂也都会要网络安全人…

Python 数据持久层ORM框架 SQLAlchemy模块

文章目录 ORM 框架SQLAlchemy 简介SQLAlchemy 作用SQLAlchemy 原理SQLAlchemy 使用流程数据库驱动配置关系型数据库配置NoSQL数据库配置 创建引擎(Engine)定义模型类(ORM)创建会话(Session)创建数据库表其他关键字参数,这些参数将传递给底层的 DDL 创建函数。 删除数…

Elastic Stack--09--ElasticsearchRestTemplate

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 spring-data-elasticsearch提供的APIQueryBuildersElasticsearchRestTemplate 方法ElasticsearchRestTemplate ---操作索引 ElasticsearchRestTemplate ---文档操作…

指针【理论知识速成】(3)

一.指针的使用和传值调用&#xff1a; 在了解指针的传址调用前&#xff0c;先来额外了解一下 “传值调用” 1.传值调用&#xff1a; 对于来看这个帖子的你相信代码展示胜过千言万语 #include <stdio.h> #include<assert.h> int convert(int a, int b) {int c 0…

模型量化(二)—— 训练后量化PTQ(全代码)

训练后量化&#xff08;Post-training Quantization&#xff0c;PTQ&#xff09;是一种常见的模型量化技术&#xff0c;它在模型训练完成之后应用&#xff0c;旨在减少模型的大小和提高推理速度&#xff0c;同时尽量保持模型的性能。训练后量化对于部署到资源受限的设备上&…

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

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

中间件 | Kafka - [常见问题]

INDEX 1 消息丢失1.1 消息丢失位置1.2 如何避免消息丢失 2 顺序消费 1 消息丢失 1.1 消息丢失位置 1&#xff1a;producer 向 kafka 投递消息时2&#xff1a;kafka-topic 中 leader 已经写入了消息&#xff0c;向副本写入消息前挂了时3&#xff1a;消费者从 kafka 拉取了消息&…

OSCP靶场--Depreciated

OSCP靶场–Depreciated 考点(1. graphql枚举 2.CVE-2021-4034提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.155.170 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-13 04:19 EDT Nmap scan report for 192.168.…

平台靠不住了,独立站,自主权,LTD营销枢纽助力企业应对全球化挑战

当今全球化的市场环境中&#xff0c;我国的出海品牌和供应链面临着很大的挑战&#xff0c;但同时也蕴含着机遇。随着跨境电商的兴起&#xff0c;像亚马逊、TikTok等大的电商平台成为中国卖家走向世界的重要桥梁。不过&#xff0c;平台的政策改变和外部环境的不确定性因素给依赖…

Rabbit算法:轻量高效的加密利器

title: Rabbit算法&#xff1a;轻量高效的加密利器 date: 2024/3/13 18:14:31 updated: 2024/3/13 18:14:31 tags: Rabbit算法流密码高安全性高性能密钥调度加密解密抗攻击性 Rabbit算法起源&#xff1a; Rabbit算法是由Martin Boesgaard和Mette Vesterager提出的一种流密码算…

(C语言)strcpy与strcpy详解,与模拟实现

目录 1. strcpy strcpy模拟实现&#xff1a; 实现方法1&#xff1a; 实现方法2&#xff1a; 2. strcat strcat模拟实现&#xff1a; 1. strcpy 作用&#xff1a;完成字符串的复制。 头文件&#xff1a;<string.h> destination是字符串要复制到的地点&#xff0c;s…

这款自动引流软件居然能让你的营销效果翻倍提升!

在数字化时代&#xff0c;营销策略的高效执行对企业来说至关重要。自动引流软件作为现代企业营销工具箱中的一员&#xff0c;其重要性不言而喻。这类软件通过智能化、自动化的方式&#xff0c;将潜在客户吸引到企业的销售渠道中&#xff0c;从而为企业带来可观的收益和品牌曝光…

SpringBoot集成netty实现websocket通信

实现推送消息给指定的用户 一、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://m…

武汉儿童医院变电所电力运维平台系统的设计及应用

彭姝麟 Acrelpsl 1 引言 2015年国务院发布《中共中央、国务院关于进一步深化电力体制改革的若干意见》&#xff08;中发[2015]9号&#xff09;&#xff0c;简称“电改9号文”。而本次新电改的重点是“三放开一独立三强化”&#xff1a;输配以外的经营性电价放开、售电业务放开…