React学习总结

一、React是什么

React是用于构建用户界面的JS库,是一个将数据渲染为HTML视图的开源JS库

为什么学?

(1)原生JS操作DOM繁琐,效率低

(2)使用JS直接操作DOM,浏览器会进行大量的重绘重排

(3)原生JS没有组件化编码方案,代码复用低

八、高阶函数

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id = "div"></div></body>
<!-- 引入依赖 ,引入的时候,必须就按照这个步骤-->
<script src="../React-js/react.development.js" type="text/javascript"></script>
<script src="../React-js/react-dom.development.js" type="text/javascript"></script><script src="../React-js/babel.min.js"></script><!--引入对于组件标签的限制-->
<script src="../React-js/prop-types.js"></script><script type="text/babel">/*高级函数:1.如果函数的参数是函数2.如果函数返回一个函数函数的珂里化:通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式
*/class Login extends React.Component{login = (event) =>{event.preventDefault(); //阻止表单提交console.log(this.name.value);console.log(this.pwd.value);}state = {name:"",pwd:""};saveType = (type) =>{return (event) => {this.setState({[type]:event.target.value});}}//因为事件中必须是一个函数,所以返回的也是一个函数,这样就符合规范了render() {return (<form action="http://www.baidu.com" >用户名:<input onChange = {this.saveType('username')} type = "text" name ="username"/>{/*直接调用回调函数也是可以的:将数据传递过去就可以*/}用户名:<input onChange = {(event)=>{this.saveType('name',event)}} type = "text" name ="username"/>密码<input onChange = {this.saveType('password')} type = "password" name ="password"/><button>登录</button></form>)}}ReactDOM.render(<Login />,document.getElementById("div"));
</script>
</html>

注意:

1、<input onChange = {this.saveType('name')} type = "text" name ="username"/>在React中如果调用函数比如代码中this.saveType不加括号,会将该函数返回,下次发生onChange就会调用该函数;如果是this.saveType()加了括号,那么该函数在渲染时就会执行一次,而且返回的是该函数的返回值,所以上述代码中saveType函数中返回了一个回调函数来实现返回函数的效果

2、无论是在箭头函数还是普通函数中,如果我们不传入任何参数时,函数都会默认追加一个event参数

3、saveType = (type) =>{
            return (event) => {
                this.setState({[type]:event.target.value});
            }
        }

在JavaScript中,使用方括号 [] 来表示变量名通常是为了实现动态属性名。

在该函数中如果type没加方括号,会被认作字符串(允许字符串不加引号)

4、event参数是当React调用函数时传入的参数,而saveType不是由React调用的,所以不能接收到event参数,故需要使用高阶函数

saveType 函数是由开发者在组件类中调用的,用于生成具体的事件处理函数

在React中,事件处理函数的调用是由React框架在事件发生时自动进行的,并且会向事件处理函数传递一个事件对象作为参数。这个事件对象包含了事件相关的信息,比如事件类型、目标元素、触发事件的元素等。

这里是为什么 event 必须在返回的回调函数中接收的原因:

(1)事件驱动:在JavaScript中,事件处理是基于事件驱动的模型。当用户与页面交互时(如点击按钮、输入文本等),事件系统会创建一个事件对象并将其传递给注册的事件处理函数。

(2)函数调用上下文saveType 函数在定义时不知道何时会被调用,也不知道将与哪个具体事件相关联。因此,它不能接收 event 参数,因为它需要在具体的事件处理上下文中被调用。

(3)高阶函数saveType 作为一个高阶函数,其目的是创建并返回一个新的函数,这个新函数将在具体的事件处理上下文中被调用,并且接收 event 对象作为参数。

(4)闭包:返回的函数会捕获 saveType 调用时的上下文,包括 this 的值和任何在 saveType 被调用时已经定义的变量。这样,即使在不同的事件处理中使用返回的函数,它也能保持对 thistype 的正确引用。

(5)灵活性和复用性:通过将 event 作为返回函数的参数,saveType 函数可以被复用于不同的事件和不同的属性,只需在创建时指定不同的 type

5、<input onChange = {(event)=>{this.saveType('name',event)}} type = "text" name ="username"/>改写法也可将event,以及name参数共同传入saveType

6、this.saveType('password')不是传入了一个字符串参数吗
这里确实是传入了一个字符串,然后调用一个高阶函数saveType,返回实际处理事件的回调函数,而在 setState 调用中,使用方括号 [type] 是一种动态属性名的语法,它允许你使用变量 type 作为属性名

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

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

相关文章

算法基础详解

大O记法 为了统一描述&#xff0c;大O不关注算法所用的时间&#xff0c;只关注其所用的步数。 比如数组不论多大&#xff0c;读取都只需1步。用大O记法来表示&#xff0c;就是&#xff1a;O(1)很多人将其读作“大O1”&#xff0c;也有些人读成“1数量级”。一般读成“O1”。虽…

Spring Boot中的定时任务调度

Spring Boot中的定时任务调度 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何在Spring Boot应用中实现定时任务调度&#xff0c;这在实际…

友力科技广州数据中心搬迁

搬迁工作内容 1.搬迁技术工作 1)确定机房搬迁的负责人以及负责人的联系方式&#xff0c;保证在搬迁的过程中统一指挥管理。 2)确定服务器的数量&#xff0c;服务器的型号&#xff0c;服务器的配置等&#xff0c;如有需要&#xff0c;联系相关服务器的供货商或者厂家提供技术支持…

PDF 如何高效的转换成 markdown

为什么需要把 PDF 转换成 Markdown 格式 在处理PDF文件时&#xff0c;将其转换为Markdown文件格式有以下几个主要原因&#xff1a; 结构化和可读性&#xff1a;Markdown通过识别结构元素&#xff08;如标题、标头、子标题、表格和图像&#xff09;来指定文档的固有结构&#xf…

【极速入门版】编程小白也能轻松上手Comate AI编程插件

文章目录 概念使用错误检测与修复能力API生成代码生成json格式做开发测试 在目前的百模大战中&#xff0c;AI编程助手是程序员必不可少的东西&#xff0c;市面上琳琅满目的产品有没有好用一点的&#xff0c;方便一点的呢&#xff1f;今天工程师令狐向大家介绍一款极易入门的国产…

容易混淆的ITAM与CMDB

在信息技术管理领域&#xff0c;IT资产管理&#xff08;ITAM&#xff09;和配置管理数据库&#xff08;CMDB&#xff09;是两个至关重要的工具。尽管它们在某些方面存在交集&#xff0c;但各自具备独特的功能和应用场景。本文将深入探讨ITAM和CMDB的概念、功能、优势&#xff0…

Linux内核 -- 多核操作之on_each_cpu函数实现与使用

使用 on_each_cpu 在多核系统中执行对称操作 背景介绍 在多核系统中&#xff0c;有时需要在每个 CPU 上执行特定的操作。这种操作需要确保每个 CPU 都能执行相同的函数&#xff0c;以实现对称的处理。在 Linux 内核中&#xff0c;提供了一个标准函数 on_each_cpu&#xff0c;…

mysql中in参数过多优化

优化方式概述 未优化前 SELECT * FROM rb_product rb where sku in(1022044,1009786)方案2示例 public static void main(String[] args) {//往list里面设置3000个值List<String> list new ArrayList<>();for (int i 0; i < 3000; i) {list.add(""…

python-docx 获取页面大小、设置页面大小(纸张大小)

本文目录 前言一、docx纸张大小介绍1、document.xml① 关于 document.xml 的一些知识点② 纸张大小在哪里③ 纸张大小都有啥④ EMU对应的尺寸列表二、获取docx纸张大小1、完整代码2、运行效果图三、python为docx设置纸张大小1、完整代码2、效果图前言 今天的这边文章,我们来说…

项目实训-vue(八)

项目实训-vue&#xff08;八&#xff09; 文章目录 项目实训-vue&#xff08;八&#xff09;1.概述2.医院动态图像轮播3.页面背景板4.总结 1.概述 除了系统首页的轮播图展示之外&#xff0c;还需要在医院的首页展示医院动态部分的信息&#xff0c;展示医院动态是为了确保患者、…

【PHP】控制摄像头缩放监控画面大小,并保存可视画面为图片

一、前言 功能描述 调用摄像头并可以控制缩放摄像头监控画面的大小&#xff0c;把可视画面保存为图片。 我使用的是USB摄像头&#xff0c;其他摄像头此方法应该也通用。 使用技术 使用到的技术比较简单&#xff0c;前端使用WebcamJS插件调用摄像头&#xff0c;并摄像头监控…

shell实用脚本1

参考公众号民工哥技术之路 场景一&#xff1a; 有两台服务器&#xff0c;a服务器的IP为11.0.1.18&#xff0c;b服务器的IP为11.0.1.12&#xff0c;都有个目录/app/tmp/test&#xff0c;我们需要比较这个目录里面的文件的一致性 #!/bin/bash ################################…

《mysql》--mysql约束

数据库约束 有的时候数据库中的数据是有一定要求的&#xff0c;有些数据认为是合法数据&#xff0c;有些是非法数据&#xff0c;如果靠人工检查显然是不靠谱的&#xff1b; 数据库会自动的对数据的合法性进行校验检查目的就是&#xff0c;保证数据中能够避免被插入/修改一些非…

Linux基础 - 使用 ssh 服务管理远程主机(window linux vscode)

目录 零. 简介 一. 打开linux shh 二. window连接linux 三. linux连接linux 四. VSCode远程 零. 简介 SSH&#xff08;Secure Shell&#xff09;服务是一种网络协议&#xff0c;主要用于在不安全的网络环境中为计算机之间的通信提供安全的加密连接。 SSH 服务具有以下重要…

二、安装虚拟机

本篇来源&#xff1a;山海同行 本篇地址&#xff1a;https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源&#xff1a;以整理到-山海同行 一、官网下载centos7 1. 进入CentOS 官方网站 官方网站&#xff1a;https://www.centos.org/download/ 2. 选择iso 点击下…

Java中的注解:原理与实战

Java中的注解&#xff1a;原理与实战 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; Java注解&#xff08;Annotation&#xff09;是一种用于在代码中添加元数…

在nginx服务器发布项目以及在tomcat服务器发布项目

在nginx服务器发布项目&#xff1a; nginx有一个“热部署”或“无缝升级”的特性&#xff0c;这意味着在不停止服务的情况下&#xff0c;也可以更新配置文件和html文件夹。 如果上传的是配置文件&#xff0c;或者修改了nginx的配置&#xff0c;那么可能需要重启nginx来应用这…

高中数学:不等式-常用不等式知识点汇总

一、基本性质 比较大小的常用两种方法&#xff1a;作差法&#xff0c;作商法 等式性质 不等式性质 二、基本(均值)不等式 扩展 三、二次函数与一元二次方程不等式 定义 解的对应关系 一元二次不等式的求解过程 四、二元一次不等式(组)与线性规划 关键在于求多个不等…

无线领夹麦克风怎么挑选,能让声音变好听的领夹麦推荐大全

近年来&#xff0c;随着直播销售和个人视频日志&#xff08;Vlog&#xff09;的流行&#xff0c;自媒体内容创作已经成为一种文化现象。这一现象不仅改变了人们获取信息的方式&#xff0c;也极大地推动了相关音频设备的发展。无线领夹麦克风&#xff0c;以其轻巧的设计和出色的…

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …