[React]jsx语法规则

JSX语法规则
1. 定义虚拟DOM时,不要写引号。(建议写括号)
2. 标签中混入JS表达式时使用{ }
3. 类名样式:指定类名不要用class(是ES6的关键字),要用className。
4. 内联样式:要用style={{key:value}}的形式去写。
5. 虚拟DOM只有一个根标签。
6. 标签必须闭合。
7. 标签首字母:
    a. 若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错。
    b. 若大写字母开头,React就去渲染对应的组件,若组件没有定义,则报错。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSX语法规则</title>
    <style>
        .title {
            background-color: aliceblue;
        }
    </style>
</head>
<body>
    <!-- 准备好一个“容器” -->
    <div id="test"></div>

    <!-- 引入react核心库,核心库必须在最前 -->
    <script type="text/javascript" src="../js/16.8.4/react.development.js"></script>
    <!-- 引入react-dom,用于支持react操作DOM -->
    <script type="text/javascript" src="../js/16.8.4/react-dom.development.js"></script>
    <!-- 引入babel,用于将jsx转为js -->
    <script type="text/javascript" src="../js/16.8.4/babel.js"></script>
    <!-- <script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script> -->

    <!-- 正式开发时不这样写,浏览器编译babel耗时,可能造成白屏 -->
    <script type="text/babel" > /* 此处一定要写babel */
        const myId = "oDD"
        const myData = "Hello, React."

        // 1.创建虚拟DOM
        const VDOM = (
            <div>
                <h1 className="title" id={myId.toLowerCase()}>
                    <span style={{color: 'white'}}>{myData}</span>
                </h1>
                <br />
                <good>123</good>
            </div>
        )
        // 2.渲染虚拟DOM到页面
        ReactDOM.render(VDOM, document.getElementById('test'))

    </script>
</body>
</html>

 

JSX
1. 全称JavaScript XML
2. react 定义的一种类似于XML的JS扩展语法:JS + XML
3. 本质是React.createElement(component, props, ...children) 方法的语法糖
4. 作用:用来简化创建虚拟DOM
    a. 写法:var ele = <h1>Hello, JSX!</h1>
    b. 注意1:它不是字符串,也不是HTML/XML标签。
    c. 注意2:它最终产生的就是一个JS对象。
5. 标签名任意:HTML标签或其它标签

 

XML早期用于存储和传输数据
<student>
  <name>Tom</name>
<age>19</age>
</student>
现在少用,如:微信公众号

 

后来常用JSON,数据量更小,可读性更好。
"{"name":"Tom", "age": 19}"
内置方法:
1. JSON.parse()
2. JSON.stringify()


posted @ 2024-03-08 11:07  夕苜19  阅读(12)  评论(0编辑  收藏  举报