前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React--2: jsx

React--2: jsx

作者头像
用户4793865
发布2023-01-12 14:10:59
5250
发布2023-01-12 14:10:59
举报
文章被收录于专栏:前端小菜鸡yym前端小菜鸡yym

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战

1. jsx了解

  • 全称:JavaScript XML
  • react定义的是一种类似于 XML 的 JS 扩展语法 JS + XML
  • 本质是 React.createElemet() 的一种语法糖

🚀 了解一下 XML 早期用于存储和传输数据(结构比数据多)

代码语言:javascript
复制
<Student>
        <name>Tom</name>
        <age>18</age>
</Student>

json

代码语言:javascript
复制
{
    "name":"Tom"
    "age":19
}

parse:用于 json 转为 js 的对象 stringfy:用于将 js 对象转为 json

2. jsx语法规则

  • 定义虚拟DOM时,不要写引号
  • 标签中使用变量,用 { }
代码语言:javascript
复制
const myId ="aBCd"
const VDOM = <h1>Hello React{myId}</h1>
ReactDOM.render(VDOM,document.getElementById('root'))
const TDOM = document.getElementById('root'); 
  • 使用外部样式不要用class,用className
代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
const myId ="aBCd"
const VDOM = <h1 class="title"><span>Hello React{myId}</span></h1>
ReactDOM.render(VDOM,document.getElementById('root'))
const TDOM = document.getElementById('root'); 

index.css

代码语言:javascript
复制
.title{
  text-align: center;
  background-color: aqua;
}
在这里插入图片描述
在这里插入图片描述

虽然效果出来了,但是我们发现它抱错。报错什么意思呢?因为不能使用class,那用什么?用className

  • 使用内联样式 要用style={{ }} 的形式去写。并且样式使用驼峰规则。

我们之前的写法

代码语言:javascript
复制
const VDOM = <h1 style="background:red">Hello React{myId}</h1>

那么,这么写是会抱错的。如下写法才是正确的。使用双花括号,最外层的花括号表示要在里面写 js 表达式了。里面的花括号表示写的是一个对象。

代码语言:javascript
复制
const VDOM = <h1 style={{background:"red",color:'white'}}>Hello React{myId}</h1>

如果想要写多个字母的属性,我们需要使用驼峰规则,如:fontSize。

代码语言:javascript
复制
const VDOM = 
<h1 style={{background:"red",color:'white',fontSize:'20px'}}>
    Hello React{myId}
</h1>
  • 不能有多个根标签,必须只有一个根标签。
在这里插入图片描述
在这里插入图片描述

所以需要在最外层包一层标签

代码语言:javascript
复制
const VDOM = (
    <div>
        <h1 style={{ background: "red", color: 'white', fontSize: '20px' }}>
            Hello React{myId}
        </h1>
        <h1>sdsds</h1>
    </div>

)
  • 标签必须闭合
  • 标签首字母
    • 若小写字母开头,则将该标签转为 html 的同名元素,若html无该标签对应的同名元素,则抱错。
    • 若大写字母开头,react就去渲染对应组件,如组件没定义,则报错。

3. jsx小练习

动态遍历列表渲染

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
// ES6 中模块化语法
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
const data = ["React","Vue","Angular"]
const VDOM = (
    <div>
        <h1>
            前端框架列表
        </h1>
        <ul>
            {data.map((item,index)=>{
                return( <li>{item}</li>)
               
            })}
        </ul>
    </div>

)
ReactDOM.render(VDOM, document.getElementById('root'))
const TDOM = document.getElementById('root');

上面的报错:说明没有唯一的key,因为是遍历出来的,我们需要加上唯一的key。

代码语言:javascript
复制
return( <li key={index}>{item}</li>)

题外话:

【 js表达式 】与【 js 语句(代码) 】

  1. 表达式:一个表达式会产生一个值,可以放在任何需要的地方。 下面这些都是表达式:
  • a
  • a+b
  • demo(1)
  • arr.map()
  • function test() { }
  1. 语句(代码)
  • if(){ }
  • for(){ }
  • switch(){ case:xxx }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. jsx了解
  • 2. jsx语法规则
  • 3. jsx小练习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档