jsx简单介绍

文章目录

  • xml简单介绍
  • jsx
    • jsx语法规则
    • jsx语法小练习

xml简单介绍

XML:xml早期用于存储和传输数据
eg:xml传输的数据格式:

<student>
	<name>yangname>
	<age>20age>
student>

现在主要的数据传输格式是JSON(parse,stringfy)

jsx

jsx的全称是javaScript XML,是react定义的一种类似于XML的JS扩展语法,本质是React.createElement的语法糖,用来简化创建虚拟DOM。

jsx语法规则

  • 定义虚拟DOM的时候不要写引号
    eg:
const VDOM = <h1 id="title"><span>Hello,Reactspan>h1>
  • 标签中混入js表达式时要用{}
    注意是js表达式,不是js语句。

    • 表达式会返回一个值:a, a+b, arr.map(), function
    • 所以if语句,for语句,switch(){case:xxx}的每一行都需要放在一个{}中
    • {}中只能写js表达式,不能写if语句和for语句,如果需要判断可以使三元表达式
  • 样式的类名不要用class,要用className,值仍然用""包裹

  • 内联样式要用style={{key:value,key:value}}的形式,(第一个{}表示是js表达式,第二个{}表示是对象)。如果value值是一个字符串需要使用引号进行包裹

  • 只有一个根标签

  • 标签必须闭合

  • 标签的首字母
    若小写字母开头,则解析jsx的时候直接将标签转换成html中同名元素,若html中无对应的标签则报错
    若大写字母开头,则解析jsx的时候会去渲染对应的组件,若没有定义,则报错
    使用样例:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <style>
        .header{
            background-color: orange;
        }
    style>
head>
<body>
    
    <div id="test">div>

    
    <script type="text/javascript" src="../js/react.development.js">script>
    
    <script type="text/javascript" src="../js/react-dom.development.js">script>
    
    <script type="text/javascript" src="../js/babel.min.js">script>
    
    <script type="text/babel">
        const myId="title"
        const myData ="Hello,React"
        // 1.创建虚拟DOM
        const VDOM = (
            <div>
                <h1 className="header" id={myId.toLowerCase()}>
                    <span style={{color:'white',fontSize:'30px'}}>{myData}</span>
                </h1>
                <h1 className="header" id={myId.toUpperCase()}>
                    <span style={{color:'white',fontSize:'30px'}}>{myData}</span>
                </h1>
                <input type="text"/>
            </div>
        )
        // 2.渲染虚拟DOM到页面
        ReactDOM.render(VDOM,document.getElementById("test"))
    script>
    
body>
html>

jsx语法小练习

实现如下效果:
jsx简单介绍_第1张图片
代码:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Documenttitle>
    <style>
        .header{
            background-color: orange;
        }
    style>
head>
<body>
    
    <div id="test">div>

    
    <script type="text/javascript" src="../js/react.development.js">script>
    
    <script type="text/javascript" src="../js/react-dom.development.js">script>
    
    <script type="text/javascript" src="../js/babel.min.js">script>
    
    <script type="text/babel">
        // 1.创建虚拟DOM
        const data =['Angular','React','Vue']
        const VDOM = (
            <div>
                <h1>前端js框架</h1>
                {data}
                <ul>
                    {
                        data.map((item,index)=>{
                            return <li key={index}>{item}</li>
                        })
                    }
                </ul>
            </div>
        )
        // 2.渲染虚拟DOM到页面
        ReactDOM.render(VDOM,document.getElementById("test"))
    script>
    
body>
html>
  • React会自动遍历数组,但是不会遍历对象
  • {}中放的是js表达式
  • jsx中的变量需要使用{}括起来(变量属于js表达式)

你可能感兴趣的:(React,javascript,前端,react.js)