从0学习React(5)---通过例子体会setState

news2024/9/29 13:46:10

上篇文章中,我们讲到了通过setState来更新组件的状态。我觉得上篇文章我讲的已经是比较详细的了,而且讲的很通俗易懂。但是上篇文章终归还是理论,没有实践,所以还是学了个表面而已。这篇文章我就结合一点实践来讲讲怎么使用这个setState。

先来看一下这个图:

现在这里有两个按钮:“未完成”和“已完成”,还有一个选项项:“故障状态”。

如果你点击未完成或者已完成按钮,虽然会显示对应的故障单,但是没有那种点击效果,就是点击按钮,按钮不会上色。那如果我想让按钮上色,应该怎么办呢?

未完成按钮是一个组件,这个按钮组件会有状态,那如果想上色的话,我们在按钮组件里加一个状态就好了。

第一步是在初始化状态的时候,给这个上色的状态加一个默认值,默认值为空,就是说第一次渲染的时候,按钮先不上色:

之后,找到未完成按钮的事件处理函数,在事件处理函数的setState更新状态中,加一个更新的状态,点击按钮就更新这个状态为cancel1

这样,在点击未完成按钮的时候,就有颜色出现了。同理,已完成按钮也是同样的操作。

这个时候,点击未完成按钮,未完成按钮高亮。点击已完成按钮,已完成按钮高亮。

请问这样可以了吗?不可以!

为什么不可以?我测试了一下发现,当我点击选项项的时候,按钮的高亮并不会消失。而且当我选择其中的一个选项的时候(比如待初诊),拿到的并不是待初诊的故障单,还是未完成或者已完成的故障单。所以我们需要找到选项项的代码,看看它的事件处理函数是什么样的:

看了这个代码,已经完全懂了。因为在点击的时候,这个状态更新没有将更新execStatus的值更新为空,而且没有将高亮更新为空,所以执行的时候execStatus==1,selectedButton==cancel1,这就不难解释为什么你点击待初诊选项的时候,这个未完成按钮高亮不会消失(因为selectedButton==cancel1),而且拿到的并不是待初诊的故障单而是未完成的故障单(因为execStatus==1)。

一句话讲就是这个选项项的setState没有更新这两个状态,你把这两个状态更新为null那就可以了:

试了一下,果然可以了。这就大功告成了。

这篇文章,我通过实践的方式讲了一下更新状态setState。当我解决完这个问题后,我发现我对于setState的理解更加透彻了。

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

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

相关文章

Java语言程序设计基础篇_编程练习题**18.37 (希尔伯特曲线)

目录 题目:**18.37 (希尔伯特曲线) 代码示例 代码逻辑解释 1. 初始化与布局 2. 绘制逻辑 3. 绘制过程 输出结果 题目:**18.37 (希尔伯特曲线) 希尔伯特曲线,由德国数学家希尔伯特于1891年第一个给出描述,是一种空间填充曲…

0108 Spring Boot启动过程

Spring Boot 的启动过程可以分为以下几个关键步骤: 1. SpringApplication 初始化 Spring Boot 应用的启动是通过调用 SpringApplication.run() 方法完成的。在这个过程中,Spring Boot 会通过 SpringApplication 类对应用进行初始化,包括设置…

ERP系统委外工单管理

1. 委外工单管理概念 1.1 定义与目的 委外工单管理是ERP系统中的一个关键组成部分,它涉及到将企业内部无法或不宜自行完成的生产任务,通过工单的形式委托给外部供应商进行加工、制造或服务的过程。委外工单管理的目的在于优化资源配置、降低生产成本、…

【Qt+Python项目构建】- 01-首次配置 Qt Creator 14.01 for Python

前言: 如何用QT实现Python的配置的交互界面。本文从0开始,进行实践的介绍。 在上一节里面,我们做了社区版本的配置: https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

Android开发仿抖音底部加载进度条

Android开发仿抖音底部加载进度条 仿抖音底部加载进度条,从中间向两头伸的动画 一、思路: 自定义VideoLoadingBar控件 二、效果图: 三、关键代码: // 联系:893151960 public class VideoLoadingBar extends View …

阿布量化:基于 Python 的量化交易框架

阿布量化(AbuQuant) 是一个开源的量化交易框架,专为金融领域的研究者和交易者设计。它基于 Python 语言开发,提供了一整套从数据获取、策略开发、回测分析到交易执行的解决方案。阿布量化不仅能够帮助用户快速实现量化策略的设计与…

IDEA:Picked up _JAVA_OPTIONS: -Xmx512M

_JAVA_OPTIONS 是一个环境变量,它可以用来设置 Java 虚拟机的启动参数 如果要取消它在idea中显示,如图所示将其删除即可

C# 游戏引擎中的协程

前言 书接上回,我谈到了Unity中的协程的重要性,虽然协程不是游戏开发“必要的”,但是它可以在很多地方发挥优势。 为了在Godot找回熟悉的Unity协程开发手感,不得不自己做一个协程系统,幸运的是,有了Unity的…

MongoDB 工具包安装(mongodb-database-tools)

首先到官网下载工具包,进入下面页面,复制连接地址,使用wget下载 cd /usr/local/mongodb5.0.14/wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.6.1.tgz 安装 tar -zxvf mongodb-database-tools-rhel70-…

26个用好AI大模型的提示词技巧

如果你已深入探索过ChatGPT、Microsoft Copilot、风变AI等前沿的生成式AI工具,那么你对“prompt”(提示词)这一核心概念一定有自己的认知。 作为连接你与AI创意源泉的桥梁,“prompt”不仅是触发无限想象的钥匙,更是塑…

基于SSM的校园自助洗衣系统【附源码】

基于SSM的校园自助洗衣系统(源码L文说明文档) 目录 4 系统设计 4.1 设计原则 4.2 功能结构设计 4.3 数据库设计 4.3.1 数据库概念设计 4.3.2 数据库物理设计 第5章 系统实现 5.1 管理员功能实现 5.1.1 洗衣机管理…

远程服务器安装anaconda并创建虚拟环境

1、承接上文新用户zrcs,在服务器的zrcs文件夹下直接下载anaconda(很慢): wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 或者选择本地下载,清华大学开源软件镜像站:https:/…

ACDsee简体中文版网盘资源下载(含教程)

如大家所熟悉的,ACDSee是一款集看图、编辑和管理于一体的软件,其凭借着打开速度快、管理功能强、操作界面友好简单等等优势,广受用户的喜欢。目前最新为ACDSee 2024版本。 一、文件管理 ACDSee数据库在文件管理方面表现出色。它可以帮助用户…

vscode编辑区看不清光标

打开 “控制面板”-“鼠标”-“指针”-“自定义”-“文本选择” 在浏览中选择“beam_r.cur”,打开后确认应用

GIS开发工程师岗位职责、技术要求和常见面试题

GIS 开发工程师负责运用地理信息系统专业知识和编程技能,进行 GIS 软件设计、开发、数据处理与管理,以实现高效的地理空间信息系统应用。 一、岗位职责 系统开发与设计 负责地理信息系统(GIS)相关软件的设计、开发、测试和维护工…

智能绘画,体现非凡想象力以文生图功能简单操作

智能绘画,体现非凡想象力以文生图功能简单操作 智能绘画技术突破了人类自身的极限,让绘画分析进入到一个更为广泛的视野中。通过输入描述性的文字,便可生成便可生成同一主题、不同风格的画作,体现出非凡的想象力,象征未…

【网络安全 白帽子】用技术合法挖漏洞,一个月能拿多少钱

现在很多白帽子(网安工程师/渗透测试工程师)都会在下班之后利用业余时间去补天之类的漏洞赏金平台挖漏洞,用技术合法给企业找出威胁存在,拿到漏洞赏金。 那么现在,一般人用网安技术挖漏洞一个月能拿多少钱&#xff1f…

【Mybatis Plus】分页插件

1.配置分页插件 Configuration public class MyBatisConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();//1.创建分页插件PaginationInnerInterceptor paginationInnerInterceptor new…

Unity实战案例全解析:RTS游戏的框选和阵型功能(2) 生成选择框

前篇:Unity实战案例全解析:RTS游戏的框选和阵型功能(1) 基础要素-CSDN博客 本案例来源于unity唐老狮,有兴趣的小伙伴可以去泰克在线观看该课程 【唐老狮】Unity实现 即时战略游戏 阵型功能 - 泰课在线 -- 志存高远&…

深刻理解Redis集群(上):RDB快照和AOF日志

RDB快照 save同步阻塞 客户端 服务端 .conf配置文件 # The filename where to dump the DB dbfilename dump.rdb# rdb-del-sync-files是Redis配置文件中的一个选项,它的作用是在主节点上执行BGSAVE或AOF持久化操作时,删除同步锁文件,以释放磁…