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

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>
    
http://www.xdnf.cn/news/672121.html

相关文章:

  • 微服务及容器化设计--可扩展的架构设计
  • Python 中的 for 循环:从基础到高级应用的全面解析
  • WPF【09】WPF基础入门 (三层架构与MVC架构)
  • 沈阳城市空气质量综合评价系统/答辩以及详细讲解
  • 基于cornerstone3D的dicom影像浏览器 第二十四章 显示方位、坐标系、vr轮廓线
  • Python requests
  • App Runner和Task Pipeline中的数据库连接管理指南
  • 【数据结构】树形结构--二叉树
  • U-Boot ARMv8 平台异常处理机制解析
  • Android studio 查看aar源码出现/* compiled code */
  • 基于 MindQuantum 记录线路作用下基底态的变化过程
  • 让jupyter notebook显示目录
  • 大模型应用:开发移动端页面个人中心页面提示词
  • 基于大模型预测视神经脊髓炎的技术方案大纲
  • Ubuntu 20.04 下 OpenCV 4.5.4 编译安装与系统默认 OpenCV 4.2 共存切换指南【2025最新版!!!】
  • Elasticsearch创建快照仓库报错处理
  • 嵌入式学习--江协stm32day3
  • 阿里云服务器采用crontab定时任务使acme.sh全自动化申请续签免费SSL证书,并部署在Linux宝塔网站和雷池WAF
  • 基于递归思想的系统架构图自动化生成实践
  • VMware-MySQL主从
  • AI提示工程(Prompt Engineering)高级技巧详解
  • 【大模型实战篇】BGE-Rerank-base重排服务部署教程
  • AI前端开发岗位面试准备指南
  • 什么是数据驱动?以及我们应如何理解数据驱动?
  • 什么是可重组机器人?
  • 33. 自动化测试开发之使用mysql异步连接池实现mysql数据库操作
  • 前端域名、端口、协议一样,本地缓存可以共享吗?
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 - 2信息采集
  • Protocol Buffers 复杂嵌套编译指南:生成 C++ 代码
  • JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面