目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 windows js win10 springboot pdf idea docker 电路 esp32 vue macOS nginx git Arduino maven ffmpeg

存档:

X

[ JSX ] 的语法规则,一文就够了

什么是JSX?

要想写jsx的语法,那么就得先了解jsx是什么,有什么用?借用百度的话:

JSX是一种JavaScript的语法扩展,运用于React架构中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素,React使用JSX来描述用户界面。

那么本质就出来了,JSX说白了就是js语法的一个扩展,是一个看起来很像 XML 的 JavaScript 语法扩展!我们也许不一定使用JSX,但是需要知道JSX有什么优点!

  1. JSX 执行更快,因为它在编译为 JavaScript 代码后进行了优化
  2. 它是类型安全的,在编译过程中就能发现错误
  3. 使用 JSX 编写模板更加简单快速

很是推荐在React中使用jsx代替常规的js,使用jsx来描述用户界面!总的来说啊,用React不使用jsx,就像吃方便面不撒调料包,木有灵魂🤓。我在第一次使用jsx时也是走了很多弯路,起初看着一个前端学弟在js里写了一句和js不想干的代码从此便入了jsx的坑!

JSX语法规则

首先,我们就不去新建完整的React项目了,普通的html就好,主要引入以下几个js

<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>

说一下这几个js库分别的作用
第一个:react.development.js,这个是React的核心库
第二个:react-dom.development.js,react-dom库,用于支持react操作dom
第三个:babel.js,这个很熟悉,起转换的作用,这里是将jsx转化为js

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsx语法</title>
</head>
<body>
<div id="app"></div>
</body>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel">
   
</script>
</html>

1. 定义虚拟DOM时,不要写引号

这个意思很简单,顾名思义,就是定义虚拟dom的时候,不要把它写成一个字符串。在js,jq中,我们应该写过这样的代码,jq的追加元素,我们追加的是字符串dom

var txt="<p>hello</p>"
$("body").append(txt); 

在JSX中需要这么写!万万不要写成字符串了哦!

正确写法

<script type="text/babel">
     const app = document.getElementById('app')
     const VDOM = (
        <div>
            <h2>hello</h2>
        </div>
    )
    ReactDOM.render(VDOM, app)
</script>

image.png

2.标签中混入js表达式的时候,需要使用 { }

写vue写习惯了,上来就 {{ }} , 然后光荣报错。不过vue也是支持JSX的哦!

<script type="text/babel">
    const app = document.getElementById('app')
    const str = 'hello'
    const VDOM = (
        <div>
            <h2>{str}</h2>
        </div>
    )
    ReactDOM.render(VDOM, app)
</script>

得到的结果,与上图一致

image.png

3.样式的类名指定不要用class,需要使用className

原文地址


标题:[ JSX ] 的语法规则,一文就够了
作者:llilei
地址:http://solo.llilei.work/articles/2023/03/02/1677770316970.html