从0学习React(7)

在上篇文章中,我们重点讲了关于函数组件的状态管理。这篇文章,我用一种新的方式来讲一讲React,我会通过一个函数来去讲React。当然,这肯定不能一个函数讲完,但是我可以讲很多个函数,一篇文章讲一个,很快,80%的React的语法知识基本就讲到了。

这个函数是这样的:

const openDetail = () => {fetchMenuPermission({ path: '/device/deviceManage' }).then((res) => {const data = res.data;if (data && data.length > 0) {setPermissions(data);setShowDetail(true);} else {message.warn('没有设备管理权限');}});
};

代码解析

1. const openDetail = () => { ... };
  • 这是一个箭头函数(arrow function)的声明。
  • openDetail 是函数的名称。
  • ()是函数的参数,这个函数没有参数。
  • { ... }是函数体,即函数的内容。
2. fetchMenuPermission({ path: '/device/deviceManage' })
  • fetchMenuPermission 是一个函数,接受一个对象作为参数,这个对象包含一个 path 属性,其值为 '/device/deviceManage'
  • 假设 fetchMenuPermission 返回一个 Promise 对象。
3. .then((res) => { ... })
  • then 方法用于处理 fetchMenuPermission 返回的 Promise 对象。
  • 当 Promise 解析成功时,then 方法中的回调函数会被调用,res 是 Promise 解析后的结果。
4. const data = res.data;
  • 从 res 对象中提取 data 属性,并将其赋值给常量 data
5. if (data && data.length > 0) { ... } else { ... }
  • 这是一个条件判断语句。
  • 检查 data 是否存在且其长度是否大于 0。
6. setPermissions(data);
  • 如果条件为真,调用 setPermissions 函数,并传入 data 作为参数。
  • 假设 setPermissions 是一个用于更新权限数据的状态更新函数。
7. setShowDetail(true);
  • 调用 setShowDetail 函数,并传入 true 作为参数。
  • 假设 setShowDetail 是一个用于更新是否显示详细信息的状态更新函数。
8. message.warn('没有设备管理权限');
  • 如果条件为假,调用 message.warn 方法,显示警告信息 '没有设备管理权限'
  • 假设 message 是一个用于显示消息的对象,warn 方法用于显示警告消息。

使用的语法和概念

1. 箭头函数(Arrow Function)
  • 箭头函数是一种简洁的函数定义方式,语法为 const functionName = (params) => { ... };
  • 在箭头函数中,this 关键字的行为与普通函数不同,它不会绑定自己的 this,而是继承自外层作用域。
const openDetail = () => { ... };
2. 对象字面量(Object Literal)
  • 对象字面量用于创建对象,语法为 { key: value }
fetchMenuPermission({ path: '/device/deviceManage' })
3. Promise 和 then 方法
  • Promise 是一种异步编程的解决方案,用于处理异步操作的结果。
  • then 方法用于在 Promise 解析成功时执行回调函数。
fetchMenuPermission(...).then((res) => { ... });
4. 解构赋值(Destructuring Assignment)
  • 解构赋值用于从对象或数组中提取值,并赋值给变量。
const data = res.data;
5. 条件语句(Conditional Statement)
  • 条件语句用于根据条件的真假执行不同的代码块。
if (data && data.length > 0) { ... } else { ... }
6. 状态更新函数(State Update Function)
  • setPermissions 和 setShowDetail 假设是 React 的状态更新函数,用于更新组件的状态。
setPermissions(data);
setShowDetail(true);

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

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

相关文章

安卓屏幕息屏唤醒

背景,今天遇项目需要,需要在下载在后台任务运行时(如下载、上传或进行长时间计算),保持 CPU 活动,然后就写了这个实现方法,废话不多说上代码 第一步,再清单AndroidManifest文件声明权…

多项目管理复杂性对企业的影响

在现代企业中,多项目管理已成为提升竞争力的关键策略。然而,资源分配冲突、沟通协调难题、优先级排序复杂等因素使得多项目管理充满挑战。资源分配冲突尤其突出,因为在多个项目同时进行时,有限的资源需要在不同项目间进行合理分配…

利用EasyExcel实现简易Excel导出

目标 通过注解形式完成对一个方法返回值的通用导出功能 工程搭建 pom <?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&qu…

Mac OS 搭建MySQL开发环境

Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql&#xff1a;二、配置环境变量三、安装Navicat 本地环境&#xff1a; Mac OS Sequoia15.0.1&#xff08;M3 Max) 目标状态&#xff1a; 下载安装Mysql&#xff0c;配置相关环境。 一、安装Mysql&…

关于springboot跨域与拦截器的问题

今天写代码的时候遇到的一个问题&#xff0c;在添加自己设置的token拦截器之后&#xff0c;报错&#xff1a; “ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:112:14) at Axi…

Java 面向对象编程(OOP)(4/30)

目录 Java 面向对象编程&#xff08;OOP&#xff09; 1. 类与对象 1.1 类的定义 1.2 对象的创建与使用 2. 封装 2.1 访问修饰符 2.2 使用 Getter 和 Setter 方法 3. 继承 3.1 继承的基本用法 3.2 方法重写 4. 多态 4.1 编译时多态&#xff08;方法重载&#xff09;…

NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力

视频诊断技术是一种智能化的视频故障分析与预警系统&#xff0c;NVR设备ONVIF接入平台EasyCVR通过对前端设备传回的码流进行解码以及图像质量评估&#xff0c;对视频图像中存在的质量问题进行智能分析、判断和预警。这项技术在安防监控领域尤为重要&#xff0c;因为它能够确保监…

记录一个跳跃的小游戏

记录一个跳跃的小游戏 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

ansible详细介绍和具体步骤

Ansible简介 1.1 Ansible的基本概念 Ansible是一款开源的自动化工具&#xff0c;旨在简化IT操作的复杂性。它由Michael DeHaan创建&#xff0c;并于2012年发布&#xff0c;随后在2015年被Red Hat收购。Ansible的核心理念是“简单即美”&#xff0c;它通过使用YAML&#xff08…

Python Pycharm下载

pycharm-professional-2023.3.3 python-3.9.0-amd64.exe 链接&#xff1a;https://pan.baidu.com/s/1YYf835hlleeDksPMmX9y2g?pwd9x16 提取码&#xff1a;9x16 更多资料获取学习书籍下面搜一搜这里不迷路&#xff0c;回复关键字获取&#xff1a;python

探秘 Feign 核心注解:@FeignClient 和 @EnableFeignClients 是如何打通微服务通信的 “任督二脉” 的?

前两篇文章揭秘 Feign 调用机制&#xff1a;微服务通信的无缝集成和微服务通信背后的秘密&#xff1a;Ribbon 如何选择最佳服务实例&#xff1f;&#xff0c;我们已经了解到 Feign 调用机制的一大优势 —— 在不需要指定域名的情况下&#xff0c;能够借助 Ribbon 精准地找到并调…

比较24个结构的迭代次数

(A,B)---6*30*2---(0,1)(1,0) 让A是结构1&#xff0c;让B全是0。收敛误差为7e-4&#xff0c;收敛199次取迭代次数平均值&#xff0c;得到28080.98 做一个同样的网络(A,B)---6*30*2---(0,1)(1,0)&#xff0c;让A是结构1-24&#xff0c;B全是0&#xff0c;用结构1的收敛权重做初…

Python unstructured库详解:partition_pdf函数完整参数深度解析

Python unstructured库详解&#xff1a;partition_pdf函数完整参数深度解析 1. 简介2. 基础文件处理参数2.1 文件输入参数2.2 页面处理参数 3. 文档解析策略3.1 strategy参数详解3.2 策略选择建议 4. 表格处理参数4.1 表格结构推断 5. 语言处理参数5.1 语言设置 6. 图像处理参数…

CentOS9 Stream上安装Edge浏览器

CentOS9 Stream上安装Edge浏览器 1. 下载 Microsoft Edge RPM 包2. 安装 Edge 浏览器3. 启动 Microsoft Edge4. 更新 Microsoft Edge&#xff08;可选&#xff09; 如果运行的时候出现错误&#xff1a;[5809:5809:1030/234136.530802:ERROR:zygote_host_impl_linux.cc(101)] Ru…

深度了解flink(七) JobManager(1) 组件启动流程分析

前言 JobManager是Flink的核心进程&#xff0c;主要负责Flink集群的启动和初始化&#xff0c;包含多个重要的组件(JboMaster&#xff0c;Dispatcher&#xff0c;WebEndpoint等)&#xff0c;本篇文章会基于源码分析JobManagr的启动流程&#xff0c;对其各个组件进行介绍&#x…

.NET内网实战:通过白名单文件反序列化漏洞绕过UAC

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏&#xff0c;主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧&#xff0c;对内网和后渗透感兴趣的朋友们可以订阅该电子报刊&#xff0c;解锁更多的报刊内容。 02基本介绍 03原理分析 在渗透测试和红…

ELK之路第三步——日志收集筛选logstash和filebeat

logstash和filebeat&#xff08;偷懒版&#xff09; 前言logstash1.下载2.修改配置文件3.测试启动4.文件启动 filebeat1.下载2.配置3.启动 前言 上一篇&#xff0c;我们说到了可视化界面Kibana的安装&#xff0c;这一篇&#xff0c;会简单介绍logstash和filebeat的安装和配置。…

20 Docker容器集群网络架构:三、Docker集群部署

文章目录 Docker容器集群网络架构:三、Docker集群离线部署3.1 环境准备3.1.1 配置主机名3.1.2 关闭firewall防火墙3.1.3 关闭iptables防火墙3.1.3.1 安装iptables3.1.3.2 禁用iptables3.1.3.3 清空防火墙规则3.1.4 关闭selinux3.1.4.1 临时关闭3.1.4.2 永久关闭3.1.4.3 查询关…

分别用webpack和vite注册全局组件

基础组件的自动化全局注册 1. 组件全部导入后&#xff0c;批量注册 import dgDialog from "/components/dgDialog/index.vue"; import svgIcon from "/components/svgIcon/index.vue"; const allComponent { dgDialog, svgIcon }; export default {inst…

二十六、Python基础语法(函数进阶-下)

一、多值参数 多值参数&#xff08;可变参数、不定长参数&#xff09;&#xff1a;有的函数不确定参数有几个&#xff0c;在一个普通的参数前面加上一个*&#xff0c;这个参数就变为不定参数。可以接收任意多个位置传参的数据&#xff0c;类型为元组。 def test(name, *args,…