目录

1.JSX语法本质

2. 在JSX中混合写入js表达式

渲染类型

渲染数字

渲染字符串

渲染布尔值

为属性绑定值

渲染jsx元素

渲染  jsx元素的数组

将普通字符串数组转为jsx数组并渲染到页面上(两种方案)

3. react中key的作用

4. JSX语法注意事项


1.JSX语法本质

并不是直接把jsx渲染到页面上,而是内部转换成了createElement 形式,在渲染的;

ReactDOM.render(<div>123</div>, document.getElementById('app'))

上面的<div>123</div>是jsx语法,编译时会自动寻找第三方插件。

2. 在JSX中混合写入js表达式

  • 在JSX语法中,要把js代码写到 {  } 中
  • jsx代码中的HTML标签必须遵循XML规范,<hr/>标签需要闭合,必须是小写

渲染类型

  • 渲染数字

      index.js文件:

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'ReactDOM.render(<div>123</div>, document.getElementById('app'))
//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'let a = 10
ReactDOM.render(<div>{a+5}</div>, document.getElementById('app'))
  • 渲染字符串

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'let str = '你好,中国'
ReactDOM.render(<div>{str}
</div>, document.getElementById('app'))
  • 渲染布尔值

{boo}不会在页面渲染,但不是报错;{boo.toString}会渲染出true;三目运算{boo?'真':'假'}可以渲染出真

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'let boo = true
ReactDOM.render(<div>{boo.toString()}<hr/>{boo ? '条件为真': '条件为假'}</div>, document.getElementById('app'))
  • 为属性绑定值

<p title = {title}>p标签</p>不要写双引号

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'let title = '999'// 3. 使用render函数渲染 jsx xml 比 html 严格多了//总结:什么情况下需要使用 {} 呢? 当我们需要在 JSX 控制的区域内,写JS表达式,则需要把 JS代码写到 {}中
ReactDOM.render(<div><p title="ooo">这是p标签</p><hr/><p title= {title}>这是第二个p标签</p></div>, document.getElementById('app'))
  • 渲染jsx元素

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'const h1 = <h1>红红火火开开心心</h1>    //不要把它想象成标签,这是一个js对象// 3. 使用render函数渲染 jsx xml 比 html 严格多了//总结:什么情况下需要使用 {} 呢? 当我们需要在 JSX 控制的区域内,写JS表达式,则需要把 JS代码写到 {}中
ReactDOM.render(<div>{h1}
</div>, document.getElementById('app'))
  • 渲染  jsx元素的数组

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'const arr =[       // 与jsx元素数组,每一项看成一个对象<h2>这是h2</h2>,<h3>这是h3</h3>
]// 3. 使用render函数渲染 jsx xml 比 html 严格多了//总结:什么情况下需要使用 {} 呢? 当我们需要在 JSX 控制的区域内,写JS表达式,则需要把 JS代码写到 {}中
ReactDOM.render(<div><hr/>{arr}</div>, document.getElementById('app'))

  • 将普通字符串数组转为jsx数组并渲染到页面上(两种方案)

将字符串数组的每一项用标签包起来

方案一:在外部进行for循环:foreach

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'const h1 = <h1>红红火火开开心心</h1>    //不要把它想象成标签,这是一个js对象
const arr =[       // 与jsx元素数组,每一项看成一个对象<h2>这是h2</h2>,<h3>这是h3</h3>
]const arrStr = ['毛利兰','赫曼','张三']//定义一个空数组,将来用来存放 名称标签
const nameArr = []
arrStr.forEach(item =>{const temp = <h5>{item}</h5>nameArr.push(temp)
})// 3. 使用render函数渲染 jsx xml 比 html 严格多了//总结:什么情况下需要使用 {} 呢? 当我们需要在 JSX 控制的区域内,写JS表达式,则需要把 JS代码写到 {}中
ReactDOM.render(<div>{arrStr}{nameArr}
</div>, document.getElementById('app'))

方法二:内部循环:map循环  (与foreach的区别是,map有返回值,foreach没有返回值是对元素的每一项进行操作)

//1. 导入包
import React from 'react'
import ReactDOM from 'react-dom'const h1 = <h1>红红火火开开心心</h1>    //不要把它想象成标签,这是一个js对象
const arr =[       // 与jsx元素数组,每一项看成一个对象<h2>这是h2</h2>,<h3>这是h3</h3>
]const arrStr = ['毛利兰','赫曼','张三']//定义一个空数组,将来用来存放 名称标签
//方案一:在外部进行for循环
const nameArr = []
arrStr.forEach(item =>{const temp = <h5>{item}</h5>nameArr.push(temp)
})// //数组的map方法
// const result = arrStr.map(item => {
//     return item + '~~'
// })
// console.log(result)//当map返回的只有一行时,可省略外面的大括号和return关键字
const result = arrStr.map(item => item + '~~')
console.log(result)// 3. 使用render函数渲染 jsx xml 比 html 严格多了//总结:什么情况下需要使用 {} 呢? 当我们需要在 JSX 控制的区域内,写JS表达式,则需要把 JS代码写到 {}中
ReactDOM.render(<div> {arr}<hr/>{arrStr}<hr/>{nameArr}<hr/>{arrStr.map(item => {return <h5>{item}</h5>})}
</div>, document.getElementById('app'))

3. react中key的作用

上面,我们将数组中的每一个对象渲染到页面上时,出现警告:

  • 在react中,需要把 key 添加给 被 forEach 或者 map 或者 for 循环直接控制的元素  (最外层的元素),否者会有警告
const arrStr = ['英语','数学','地理','历史']
const namearr=[];
arrStr.forEach(item=>{const temp = <h5 key={item}>{item}</h5>;namearr.push(temp);
})

如果h5外面有一个div,则需要加给div

map函数使用:数组的map方法,map中必须写return

const arrStr = ['英语','数学','地理','历史']
const result= arrStr.map(item=>{return item+"~~";
})
console.log(result)

 {arrStr.map(item => {return <h5 key={item}>{item}</h5>})}

4. JSX语法注意事项

  • 在JSX中写注释:,推荐使用{/*这是注释*/},或者//
  • 为JSX中的元素添加class类名:需要使用className代替class;htmlFor替换label中的for属性
  • 在JSX常见DOM的时候,所有的节点,必须拥有唯一的根元素进行包裹
  • 在JSX语法中,标签必须成对出现,如果是单标签,则必须自闭合
   <p className="myele">111111111</p><label htmlFor="ooo"></label>

a.   当编译引擎,在编译JSX代码的时候 
b   .如果遇到<那么就把它当做HTML代码去编译 
c.   如果遇到了{}就把花括号内部的代码当做普通JS代码去编译

总的代码:index.js


import React from 'react'
import ReactDOM from 'react-dom'//import CmtList from './components/CmtList'
// import BindEvent from '@/components/BindEvent'let a=10;
let str = '你好,中国';
let boo=true;
let title='9999';
const h1=<h1>红红胡奥胡奥</h1>
const h2=[<h1>这是h1</h1>,<h2>这是h2</h2>]const arrStr = ['英语','数学','地理','历史']
//定义一个空数组,将用来
const namearr=[];
// const result= arrStr.map(item=>{
//   return item+"~~";
// })
// console.log(result)arrStr.forEach(item=>{const temp = <h5>{item}</h5>;namearr.push(temp);
})//3. 调用render函数渲染
ReactDOM.render(<div>
{a + 2}
<hr/>
{str}
<hr/>
{boo ? '条件真':'条件假'}
<hr/>
<p title={title}>这是p标签</p>
{h1}
<hr/>
{h2}
<hr/>
{namearr}
<hr/>
{arrStr.map(item=>{return <h3>{item}</h3>
})}s
</div>, document.getElementById('app'))

最全的react视频【黑马程序员】--第五章 JSX语法相关推荐

  1. HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第五章课后习题(课程介绍专栏效果)

    黑马程序员编著的教材  HTML+CSS+JavaScript网页制作案例教程 第五章:"课程介绍"专栏-课后习题参考代码 题目原型: 请结合给出的素材,运用列表标记,超链接标记以 ...

  2. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第五章 课后答案

    所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.简述什么是会话技术? 2.简述Cookie与Session的区别?(至少写出3点) 3.请设 ...

  3. HTML+CSS+JavaScript网页制作案例教程-黑马程序员-第四章课后习题(播放器图标)

    黑马程序员编著的教材  HTML+CSS+JavaScript网页制作案例教程 第四章:播放器图标-课后习题参考代码 ........ 记得 关注,收藏,评论哦,作者将持续更新.... 我自己做的效果 ...

  4. 黑马程序员——C语言基础---基础语法

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  5. 黑马程序员--- c语言基础--基本语法

    **第一讲 c语言概述** 一. 计算机和软件常识 1. 计算机运行原理 1) 硬件基本组成:硬盘.内存.CPU 2) 各个部件之间的运作协调 计算机只能识别0和1 1) 0和1组成的指令 2) 0和 ...

  6. 黑马程序员___Java基础[02-Java基础语法](一)

    Java语言基础组成 一.关键字 1)定义:被Java语言赋予了特殊含义的单词 2)特点:关键字中所有字母均为小写 3)作用及分类: 下面是Java语言保留专用的50个关键字: 用于定义数据类型的关键 ...

  7. 黑马程序员C++第一章

    第一章 1.书写Hello word 编写一个C++程序总共分为四个步骤: 创建项目 创建文件 编写代码 运行程序 2.注释-单行注释和多行注释 作用:在代码中多加一行说明和注释,方便自己或其他程序员 ...

  8. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第六章 课后答案

    所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.请简述JSP的运行原理. 1.请简述JSP中的9个隐式对象. 2.请使用include标签编 ...

  9. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第四章 课后答案

    所有章节答案合集-->传送门 [测一测] 学习完前面的内容,下面来动手测一测吧,请思考以下问题: 1.简述请求转发与重定向的异同?(至少写3点) 2.请写出禁止浏览器缓存页面的核心代码. 3.请 ...

最新文章

  1. 软件破解工具整理收集
  2. jsp页面中使用超链接标签a中的属性href和onclick同时触发怎么执行
  3. HDU4311(排序+二分)
  4. 数据结构题:克鲁斯卡尔(Kruscal)算法求最小生成树
  5. bzoj4152: [AMPPZ2014]The Captain
  6. jQuery跨域调用Web API
  7. 牛逼了 这 7 个 Python 入门实战项目,我打 99.99 分
  8. cojs EX_香蕉 题解报告
  9. python后台——asyncio,多进程+asyncio
  10. python试卷河南理工大学官网_河南理工大学试卷模板
  11. 电脑右键新建没有文本文档解决办法
  12. ultravnc中文版,不能错过的5款ultravnc中文版
  13. python-pptx替换ppt模板的文本
  14. Windows下设置桌面壁纸的代码(QT版)
  15. UDS诊断故障码及诊断服务介绍(14h, 19h, 85h)
  16. Java面试题(131-135)
  17. php天气城市切换怎么实现,PHP 调用接口生成天气预报 三级联动城市列表 仿中国天气网界面...
  18. 《如何获得真正的财富》精髓:选择比努力更重要,对于个人来说,选择了对的城市和对的行业,人生就成功了大半,对于企业来说,用最少的广告投入获得品牌知名度是获得财富的关键。
  19. 计算机教师格言座右铭,教师格言座右铭100句
  20. Git 学习笔记——程序员篇

热门文章

  1. iPhone骚扰拦截错误问题的尝试
  2. UIP协议栈笔记·三
  3. 关于微信小程序,需要了解的有哪些?
  4. VB.NET自动加载宏
  5. java螺旋填数三角形_Java4Android作业:打印任意行数的三角形图案
  6. windows11中启用64位ie浏览器的方法
  7. 解决Windows Server 2008 R2无法保存网络发现状态更改问题
  8. 六个程序员常用的接单平台推荐
  9. Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”
  10. 怎么把图片英语翻译成中文?这些方法和步骤你要学会