JSX的语法规则

242 阅读2分钟

JSX的语法规则

JSX全称为JavaScript XML,是react定义的一种类似于XML的JS扩展语法:JS + XML,其本质就是React.createElement(component,props,...children)方法的语法糖,我们用它来简化创建虚拟DOM的过程。

⭐创建虚拟DOM

语法:var ele=<h1>Hello JSX!</h1>;//注意这里的<h1>Hello JSX!</h1>既不是字符串,也不是HTML/XML标签

例:创建一个h1标签,id为VDOM,内容为Hello React

const VDOM = <h1 id="vdom">Hello,React</h1>

注意值不要写引号,因为那不是字符串

如果想通过变量的方式引入内容,需要用花括号:

const myId = 'vdom';
const myContent = 'Hello,React'
const VDOM = <h1 id={ myId }>{ myContent }</h1>

在花括号内还可以进行各种操作(表达式):

const VDOM = <h1 id={myId}>{ myContent.toLowerCase() }</h1>

⭐为你的虚拟DOM添加样式

非内联样式

我们可以直接通过为VDOM传入对应的id或class来修改其样式:

<head>
    <style>
        #vdom{
            background: black;
        }
    </style>
</head>
<body>
    <script type="text/babel">
        // 1.创建虚拟DOM
        const VDOM = <h1 id="vdom">Hello,React</h1> //这里不写引号,因为值不是字符串
        // 2.渲染虚拟DOM到页面
        ReactDOM.render(VDOM,document.getElementById('test'));
    </script>
</body>

注意:如果是为其指定class,则需要写成如下形式

const VDOM = <h1 className="vdom">Hello,React</h1>

内联样式

如果你想为你的虚拟DOM添加内联样式,那么就要注意了,不能直接写style="..." ,这里不能为style直接传入字符串

那要怎么写呢?答:{{}}

双花括号,最外层代表里面是js代码,最内层代表一个对象

写出来:

const VDOM = <h1 style={{color:'white',fontSize:'20px'}}>Hello,React</h1>

⭐多个DOM的写法

上面例子中我们只写了一个h1标签,但实际中的结构会复杂很多,如果你这样写就会报错:

const VDOM = (
    <p>
        <span>Hello React</span>
    </p>
    <p>
        <span>Hello React Again</span>
    </p>
    
)

为什么呢?

因为规定一个VDOM中只能有一个根标签,这里两个p标签都在外层,是同级的,也就有了两个根标签,解决方案也很简单,用一个容器包裹两个p:

const VDOM = (
    <div>
        <p>
            <span>Hello React</span>
        </p>
        <p>
            <span>Hello React Again</span>
        </p>
    </div>
)

这样就保证了只存在一个根标签👆