day04--react中state的简化

embedded/2024/9/23 14:29:22/

一、简化state

回顾我们之前的写法:
state是在构造器里面定义的。
1)我们为什么要在构造器里面定义?
答:对于创建一个实例对象时,我们对要传进来的数据进行接收,那么我们必须要写一个构造器来接收传进来的数据,但是如果我们要定义的数据是固定的,那么就可以不使用构造器的形式,而是使用赋值语句的方式定义一个属性接收数据。

<!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><script>javascript">class Person {constructor(name,age) {this.name = namethis.age = agethis.school = "211大学"}}let p = new Person("张三",18)console.log(p);</script>
</body>
</html>

2)如何简化state?
既然我们要传的数据是固定的,那么就不需要构造器,直接使用赋值语句的方式定义属性,那么通过赋值语句定义的属性都会放在实例对象身上。那么我么就可以通过实例对象调用自身的属性,即this.xxx。
而对于下面的switchover 方法来说,必须使用箭头函数的形式,此时的this指向的就是实例对象,否则this为undefined。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>hello_react</title>
</head><body><!-- 准备好一个容器 --><div id="test"></div><!-- 引入react核心库 --><script type="text/javascript" src="/react-development.js"></script><!-- 引入react-dom,用于支持react操作DOM --><script type="text/javascript" src="/react-dom-development.js"></script><!-- 引入babel,用于将jsx转为js --><script type="text/javascript" src="/babel.min.js"></script><script type="text/babel">javascript">// 1.创建组件class Weather extends React.Component {// 初始化状态// 赋值语句是放在对象实例身上的state = { isHot: false,wind: "微风" }// render调用1+n次render() {const { isHot,wind } = this.statereturn <h1 onClick={this.switchover}>今天天气很{isHot ? '炎热' : '凉爽'},{wind}</h1>}// 自定义方法--要用赋值语句的形式+箭头函数switchover = ()=> {const isHot = this.state.isHot//此时的this指向的是Weather new出来的这个实例对象this.setState({isHot: !isHot})}}// 2.渲染虚拟DOM到页面ReactDOM.render(<Weather />, document.getElementById('test'))</script>
</body></html>

http://www.ppmy.cn/embedded/21028.html

相关文章

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端&#xff0c;Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能&#xff0c;还有实用的差异查看器&#xff0c;你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

航拍图像拼接 | 使用C++实现的无人机航拍图像拼接

项目应用场景 面向无人机航拍图像拼接场景&#xff0c;项目使用 C 实现&#xff0c;使用 harris 角点查找特征点 非极大值抑制&#xff0c;由于航拍图像没有严重的尺度旋转变化&#xff0c;使用了 berief 描述子&#xff0c;然后使用 RANSAC 求 H&#xff0c;最后进行图像拼接…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务&#xff08;Spring MVC Springboot&#xff09;同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题&#xff0c;因为已经处理过…

AI自动生成PPT文档 aippt的API介绍文档

官方链接直达&#xff01; 产品介绍​ 能力介绍​ AiPPT 是一款智能生成演示幻灯片的在线工具。专业设计团队打造海量模板资源&#xff0c;输入标题即可轻松生成完整的PPT。同时 AiPPT 支持导入多格式文档一键生成 PPT&#xff0c;让 PPT 创作更加高效。聚焦于内容&#xff0…

李沐-35 分布式训练【动手学深度学习v2】

batchsize增加超过一定范围&#xff0c;有可能会导致训练效率下降。batchsize大到一定程度&#xff0c;每个batch内的样本的多样性不会比之前有多大增长&#xff0c;对梯度的贡献也不会比之前的batch大多少&#xff0c;但是大的batchsize会带来更多的训练时间&#xff0c;就造成…

【JavaParser笔记04】如何使用JavaParser依赖库生成Java类、接口、方法、属性、注释等内容

这篇文章,主要介绍如何使用JavaParser依赖库生成Java类、接口、方法、属性、注释等内容。 目录 一、JavaParser代码生成 1.1、引入依赖 1.2、生成Java类 1.3、生成属性和setter、

PyTorch与深度学习:探索人工智能的新前沿

PyTorch与深度学习&#xff1a;探索人工智能的新前沿 深度学习作为人工智能的一个分支&#xff0c;近年来在多个领域取得了突破性进展。而PyTorch&#xff0c;作为一个开源的机器学习库&#xff0c;已成为深度学习研究和应用开发的重要工具。本文将深入探讨PyTorch在深度学习领…