jsx简单介绍

xml简单介绍

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

<student>
	<name>yang</name>
	<age>20</age>
</student>

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

jsx

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

jsx语法规则

  • 定义虚拟DOM的时候不要写引号
    eg:
const VDOM = <h1 id="title"><span>Hello,React</span></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>Document</title>
    <style>
        .header{
      
      
            background-color: orange;
        }
    </style>
</head>
<body>
    <!-- 容器 -->
    <div id="test"></div>

    <!-- REACT ,react核心库-->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- REACTDOM ,支持react操作dom-->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 将jsx转换成js文件 -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <!--text/babel表明是jsx  -->
    <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语法小练习

实现如下效果:
在这里插入图片描述
代码:

<!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>Document</title>
    <style>
        .header{
      
      
            background-color: orange;
        }
    </style>
</head>
<body>
    <!-- 容器 -->
    <div id="test"></div>

    <!-- REACT ,react核心库-->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- REACTDOM ,支持react操作dom-->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 将jsx转换成js文件 -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <!--text/babel表明是jsx  -->
    <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表达式)

猜你喜欢

转载自blog.csdn.net/mantou_riji/article/details/127206014
JSX