当前位置: 首页 > article >正文

React---day2

2、jsx核心语法

2.1 class

和java很像啊

   <script>// 定义一个对象class Person {//构造函数constructor(name , age){this.name = name;this.age = age;}// 定义一个方法sayHello(){console.log(`hello ${this.name}`);}}// 创建一个对象Person1 = new Person('张三' , 18);// 调用对象的方法Person1.sayHello();// 继承:提高代码复用性class Student extends Person{// 构造函数constructor(name , age , score){// 调用父类的构造函数super(name , age);this.score = score;}// 重写父类的方法sayHello(){// 调用父类的方法super.sayHello();console.log(`我的分数是${this.score}`);}}// 创建一个对象Student1 = new Student('李四' , 20 , 100);// 调用对象的方法Student1.sayHello();</script>

2.2 嵌入数据

2.2.1 嵌入变量

在{}中可以正常显示的内容:

                    name:"jyx" , //Stringage: 20 , //Numbernames:["axigg" , "abc"],//Array

在{}中不能正常显示的内容(忽略)

                    text1:null,//nulltext2:undefined,//undefiedtest3:false,//boolean

为什么???就是避免出现undefied显示在页面上的情况

2.2.2 嵌入表达式
              <h2>{firstname + lastname}</h2><h2>{5 * 3}</h2><h2>{isLogin ? "成功登录" : "登录失败"}</h2><h2>{this.getFullName()}</h2>

2.3 绑定

2.3.1 绑定属性

主要就是两个class和style

 {/*绑定class , className*/}<div className="title">我是className</div>{/*绑定style , 小驼峰*/}<div style={{color: "red",fontSize: "20px",backgroundColor: "yellow",padding: "10px"}}>绑定style</div>
2.3.2 绑定事件

绑定事件就是onClick,但是一定要注意this的执行

 <script type="text/babel">class App extends React.Component {constructor() {super()this.state = {message:"我是h2",num:0}// 初始化的时候就绑定thisthis.increaseNum = this.increaseNum.bind(this)}render() {return (<div><h2 onClick={this.btnClick.bind(this)}>点击我</h2><h3 onClick={this.increaseNum}>加1</h3><h2 onClick={this.showNum}>展示数字</h2></div>)}btnClick() {console.log(this.state.message)}increaseNum() {console.log(this.state.num + 1)}showNum =  () => {console.log(this.state.num)}}ReactDOM.render(<App />, document.getElementById('app'))</script>

​ 在btnClick中打印this,结果是undefined

​ 这是因为btnClick方法没有被绑定到组件实例上,btnClick方法在被调用时,this指向了全局对象而不是组件实例,this默认为undefined。

  • 解决方法1:在构造函数中使用this.btnClick = this.btnClick.bind(this) — 显式绑定,不常见
  • 解决方法2: 给btn函数在初始化的时候就绑定this
  • 解决方法3:使用箭头函数,箭头函数不会创建自己的this,它会捕获上下文中的this值

2.4 渲染

2.4.1 条件渲染
  • 在JSX中可以使用三元运算符来进行条件渲染。

例如:{isLogin ?

欢迎回来

:

请先登录

}

  • 也可以使用逻辑与运算符(&&)来简化条件渲染。

    例如:{isLogin &&

    你好啊,蒋乙菥

    }

  • v-show是通过设置元素的style属性来控制显示和隐藏,而v-if是通过条件判断来决定是否渲染该元素。

     <h4 style={{ display: isLogin ? "block" : "none" }}>欢迎公主回家</h4>
    
2.4.2 列表渲染
  • 使用map高阶函数

  •    <ul><h2>数组展示</h2>{this.state.foods.map((item , index , arr) => {return (<li key={index}>{item}</li>)})}</ul>
    
  • filter:进行过滤

  •  <ul><h2>数组筛选</h2>{this.state.num.filter((item , index , arr) => {if( item % 2 === 0) {return true} else {return false}}).map((item , index , arr)=> {return (<li key={index}>{item}</li>)})}</ul>
    
  • slice:进行截取

  •     <ul><h2>数组截取</h2>{this.state.foods.slice(0,3).map((item , index , arr) => {return (<li>{item}</li>)})}</ul>
    

相关文章:

React---day2

2、jsx核心语法 2.1 class 和java很像啊 <script>// 定义一个对象class Person {//构造函数constructor(name , age){this.name name;this.age age;}// 定义一个方法sayHello(){console.log(hello ${this.name});}}// 创建一个对象Person1 new Person(张三 , 18);//…...

若依框架 账户管理 用户分配界面解读

下载下来若依网站后 先对 后端代码进行解读 首先项目架构&#xff1a; 一般用 admin 这个比较多进行二次开发 其他 rouyi-common,rouyi-framework:为公共部分 rouyi-generator&#xff1a;代码生成部分 ruoyi-quartz&#xff1a;定时任务 ruoyi-system&#xff1a;系统任务 …...

文档贡献 | 技术文档贡献流程及注意事项(保姆级教程)

内容目录 一、注册流程 二、创建分支&#xff08;Fork&#xff09; 三、使用GitLab界面更新文件的MR流程 四、使用Git命令行工具更新文件的MR流程 五、注意事项 一、注册流程 1、注册页面 在长安链平台注册页面&#xff0c;输入手机号码 &#xff0c;点击 “获取验证码”…...

open-vscode-server +nodejs 安装

GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。https://gitcode.com/gh_mirrors/op/openvscode-server/?utm_sourceartical_gitcode&ind…...

知行之桥如何将消息推送到钉钉群?

在钉钉平台中&#xff0c;机器人主要分为企业机器人和自定义机器人两类。本文将重点介绍如何通过自定义机器人&#xff0c;实现将知行之桥 EDI 系统的通知消息高效推送至钉钉群&#xff0c;帮助企业第一时间掌握业务动态。 一、在钉钉群中添加自定义机器人 在需要接收知行之桥…...

09《从依赖管理到容器化部署:Maven 全链路实战笔记,解锁 Java 项目自动化构建的终极奥秘》

目录 一、Maven 核心基础强化 &#xff08;一&#xff09;Maven 架构与工作原理 1. 核心组件解析 2. 工作流程图示​编辑 &#xff08;二&#xff09;项目结构深度实践 1. 标准目录扩展说明 2. 多模块项目典型结构示例​编辑 二、依赖管理高级进阶 &#xff08;一&…...

<el-date-picker>组件传参时,选中时间和传参偏差8小时

遇到一个bug&#xff0c;不仔细看&#xff0c;都不一定能发现&#xff0c;bug描述&#xff1a;我们有一个搜索框&#xff0c;里面有一个时间选择器&#xff0c;当我使用<el-date-picker>时&#xff0c;我发现当我选择时分秒之后&#xff0c;显示都正常&#xff0c;但是当…...

ST MCU CAN模块--TTCAN模式浅析

ST MCU CAN模块使用总结 1 前言 ​ 传统CAN 采用事件触发消息传输机制,CSMA/ CD AMP( Carrier-Sense Mult iple Access w ith Co llision Detect ion and Arbit ration on Message Priorit ies, 载波侦听、多路访问、冲突检测、优先级仲裁) 介质访问控制机制, 即多个消息同时…...

MySQL数据库零基础入门教程:从安装配置到数据查询全掌握【MySQL系列】

第1章&#xff1a;认识MySQL 1.1 什么是MySQL&#xff1f; MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典MySQL AB公司开发&#xff0c;现由Oracle公司维护。它使用结构化查询语言&#xff08;SQL&#xff09;进行数据库的管理和操…...

动态规划(7):背包问题

引言 背包问题是动态规划中最经典、最重要的问题类型之一,它不仅在算法竞赛中频繁出现,也在实际应用中有着广泛的用途。从资源分配到投资组合优化,从生产计划到网络路由,背包问题的思想几乎无处不在。正因如此,背包问题被誉为动态规划的"必修课",掌握背包问题…...

谷歌浏览器Google Chrome v137.0.7151.41 中文版本版+插件 v1.11.1

一、软件介绍 这个版本解压就可以用&#xff0c;界面是中文的。 保留了核心功能&#xff0c; 二、软件特点 便携性 &#xff1a;解压即可使用&#xff0c;不想用了直接删掉整个文件夹。 增强功能 &#xff1a;通过Chrome增强软件劫持补丁chromev1.11.1 x64 (version.dll)实现多…...

《深入解析UART协议及其硬件实现》-- 第三篇:UART ASIC实现优化与低功耗设计

第三篇&#xff1a;UART ASIC实现优化与低功耗设计 1. ASIC与FPGA设计差异 1.1 标准单元库选型 库类型对设计的影响 &#xff1a; 高性能库&#xff08;High-Speed&#xff09; &#xff1a;使用低阈值电压晶体管&#xff0c;速度快但漏电功耗高&#xff0c;适合关键路径优化…...

Hadoop常用端口号和配置文件

常用端口号有&#xff1a; hadoop2.x Hadoop3.x 访问HDFS端口 50070 9870 访问MR执行情况端口 8088 8088 历史服务器 19888 19888 客户端访问集群端口 9000 8020 常用配置文件 hadoop2.x core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-si…...

Apache Paimon:存储结构、写入及其源码分析

Apache Paimon (此前称为 Flink Table Store)是一种流式数据湖存储技术&#xff0c;采用 LSM&#xff08;Log-Structured Merge-tree&#xff09;树结构来存储数据&#xff0c;支持高吞吐、低延迟的数据摄入和实时查询&#xff0c;尤其适用于流式和批量统一的场景。 1. 创建表…...

19、Python字符串高阶实战:转义字符深度解析、高效拼接与输入处理技巧

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的转义字符&#xff1f;1、例子1&#xff1a;快递地址格式化打印2、答案&#xff1a;&#xff08;1&#xff09;转义字符 二、问题&#xff1a;Python的…...

国芯思辰| 同步降压转换器CN2020应用于智能电视,替换LMR33620

在智能电视不断向高画质、多功能、智能化发展的当下&#xff0c;其内部电源管理系统的性能至关重要。同步降压转换器可以为智能电视提供稳定、高效的运行。 国芯思辰CN2020是一款脉宽调制式同步降压转换器。内部集成两个功率MOS管&#xff0c;在4.5~18V宽输入电压范围内可以持…...

6个月Python学习计划 Day 8 - Python 函数基础

第一周 Day 1 - Python 基础入门 & 开发环境搭建 Day 2 - 条件判断、用户输入、格式化输出 Day 3 - 循环语句 range 函数 Day 4 - 列表 & 元组基础 Day 5 - 字典&#xff08;dict&#xff09;与集合&#xff08;set&#xff09; Day 6 - 综合实战&#xff1a;学生信息…...

DeepSeek 提示词大全

目录 前言一、提示词基础理论 什么是提示词提示词的类型提示词的基本结构 二、提示词设计原则 明确指令结构化表达情境化需求渐进式引导边界与限制 三、场景化提示词模板 写作创作类角色扮演类信息提取类代码编程类教育学习类商业营销类生活助手类 四、提示词优化技巧 迭代式优…...

俄罗斯无人机自主任务规划!UAV-CodeAgents:基于多智能体ReAct和视觉语言推理的可扩展无人机任务规划

作者&#xff1a;Oleg Sautenkov 1 ^{1} 1, Yasheerah Yaqoot 1 ^{1} 1, Muhammad Ahsan Mustafa 1 ^{1} 1, Faryal Batool 1 ^{1} 1, Jeffrin Sam 1 ^{1} 1, Artem Lykov 1 ^{1} 1, Chih-Yung Wen 2 ^{2} 2, and Dzmitry Tsetserukou 1 ^{1} 1单位&#xff1a; 1 ^{1} 1斯科尔…...

结构性设计模式之Bridge(桥接)

结构性设计模式之Bridge&#xff08;桥接&#xff09; 摘要 桥接模式是一种结构性设计模式&#xff0c;其核心思想是将抽象部分与实现部分分离&#xff0c;使二者能够独立变化。本文通过汽车产品生产案例&#xff08;产品A/B与颜色红/蓝/黄&#xff09;展示了桥接模式的应用&…...

CSS篇-1

1. CSS 有哪些基本选择器&#xff1f;它们的权重是如何表示的&#xff1f; 这是一个关于 CSS 基础且极其重要的问题&#xff0c;因为它直接关系到我们如何精准地控制页面元素的样式&#xff0c;以及在样式冲突时浏览器如何决定哪个样式生效。理解 CSS 选择器及其权重&#xff…...

Android 16系统源码_无障碍辅助(一)认识无障碍服务

前言 Android 的无障碍辅助功能&#xff08;Accessibility&#xff09;是一套专为残障用户或特殊场景设计的核心技术框架&#xff0c;旨在让所有用户都能便捷地操作设备。其功能覆盖视觉、听觉、运动能力和认知障碍支持&#xff0c;同时为开发者提供标准化 API 以实现应用适配…...

分布式数据库备份实践

在分布式备份中可以采取两种方式进行备份&#xff0c;一种是采用手动编写backup.yml文件进行备份&#xff0c;另外一种是吧备份过程交给备份工具自动执行。如果需要个性化进行备份&#xff0c;建议采用手动编写备份文件方式进行备份。 以下是针对两种备份方式的实践&#xff1a…...

如何发布npm包?

如何发布npm包&#xff1f; 1. 注册账号[npm官网](https://www.npmjs.com/)2. 检查 npm 源是否在官方 npm 仓库&#xff0c;如果不在&#xff0c;进行切换3. 检查4. 打包配置5. 发布6. 使用错误&#xff1a;版本更新命令 1. 注册账号npm官网 2. 检查 npm 源是否在官方 npm 仓库…...

鸿蒙---使用真机模拟器的时候,图片不加载问题

使用真机模拟器的时候&#xff0c;图片不加载问题 解决方案&#xff1a; 1&#xff0c;找到 module.json5 文件&#xff0c;路径 entry -> src -> main -> module.json5 2&#xff0c;在module.json5 文件中&#xff0c;开头的’module’中添加 "requestPermiss…...

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.6 R语言解题

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅珏生译) 第5章析因设计引导5.7节思考题5.6 R语言解题。主要涉及方差分析&#xff0c;正态假设检验&#xff0c;残差分析&#xff0c;交互作用图&#xff0c;等值线图。 dataframe <-data.frame…...

.NET 8使用AOT发布ASP.NET Core应用

.NET 8 使用 AOT 发布 ASP.NET Core 应用 一、AOT 编译简介 在 .NET 开发中&#xff0c;编译方式有多种&#xff0c;其中 AOT&#xff08;Ahead-Of-Time&#xff09;编译是一种区别于传统 JIT&#xff08;Just-In-Time&#xff09;编译的方式。传统的 JIT 编译是在 .NET 应用…...

OpenCV计算机视觉实战(8)——图像滤波详解

OpenCV计算机视觉实战&#xff08;8&#xff09;——图像滤波详解 0. 前言1. 线性滤波1.1 均值滤波1.2 高斯滤波1.3 拉普拉斯滤波1.4 Sobel 滤波 2. 非线性滤波3. 自定义卷积核小结系列链接 0. 前言 在本文中&#xff0c;我们将深入探索线性与非线性滤波的算法原理、性能优化及…...

Docker 前端镜像容器部署指南

1. 编写 Dockerfile 文件 # 使用轻量级的 Nginx Alpine 作为基础镜像 FROM nginx:alpine# 设置工作目录 WORKDIR /usr/share/nginx/html# 删除默认的 Nginx 静态文件 RUN rm -rf ./*# 复制本地 dist 目录下的文件到容器中 COPY ./dist /usr/share/nginx/html# 暴露容器端口 EX…...

OpenAI大模型不听人类指令事件的技术分析与安全影响

OpenAI大模型不听人类指令事件的技术分析与安全影响 OpenAI大模型o3确实存在不遵从人类关闭指令的现象&#xff0c;这一行为已被第三方安全机构验证&#xff0c;但其本质是技术缺陷而非AI意识觉醒。帕利塞德研究所的测试显示&#xff0c;在100次实验中o3有7次成功绕过关闭指令…...