← 返回首页
React基础教程(五)
发表时间:2021-08-01 10:19:58
JSX基础语法

React 使用 JSX (Javascript XML)来替代常规的 JavaScript。JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。

我们不需要一定使用 JSX,但它有以下优点:

通过一个实例了解JSX的基础语法。

实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/react/18.0.0-rc.1-next-629036a9c-20220224/umd/react.production.min.js"></script>
    <script src="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/react-dom/18.0.0-rc.1-next-629036a9c-20220224/umd/react-dom.production.min.js"></script>
    <script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/babel-standalone/7.0.0-alpha.20/babel.min.js"></script>

    <style>
        .myclass {
            background: lightpink;
            color: cornflowerblue;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="app">
</div>

<script type="text/babel">
    //这里是单行注释
    /*这里是多行注释*/
    let msg = '你好,React';
    let num = 100;
    let person = {
        name: '张三',
        age: 18
    }

    function sayHello() {
        return 'hello,world!';
    }

    function introduce(person) {
        //使用ES5字符串
        //return "my name is:"+person.name+",age is:"+person.age;
        //使用ES6模板字符串语法
        return `my name is ${person.name}, age is : ${person.age}`;
    }

    let citys =
        <ul>
            <li>北京</li>
            <li>上海</li>
            <li>广州</li>
        </ul>
    let url = 'https://www.baidu.com';

    //属性绑定
    let link = <a href={url}>百度网</a>

    //样式绑定
    let mystyle = {backgroundColor: '#7bbfea', textAlign: 'center', color: '#FFF'};
    let node =
        <div>
            {/*这里是jsx的注释,注意多行标签必须使用父元素包裹起来*/}
            <h1>{msg}</h1>
            <hr></hr>
            <div>这里是DIV的内容</div>
            {/*使用表达式*/}
            <div>{++num}</div>
            <div>{sayHello()}</div>
            <div>{introduce(person)}</div>
            {/*渲染数组*/}
            <div>{citys}</div>
            <div>{link}</div>
            <div style={mystyle}>带样式表的DIV(使用style属性)</div>
            {/*注意:jsx里不能使用class属性*/}
            <div className="myclass">带样式表的DIV(使用class属性)</div>
        </div>;
    ReactDOM.render(node, document.querySelector("#app"));
</script>
</body>
</html>

运行效果:

引用jsx文件,在js文件夹里创建demo.js,把上面的script标签里的脚本抽取为独立jsx文件引用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/react/16.13.1/umd/react.production.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/react-dom/16.13.1/umd/react-dom.production.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.0.0-beta.3/babel.min.js"></script>
    <style>
        .myclass {
            background: lightpink;
            color: cornflowerblue;
            text-align: center;
        }
    </style>
</head>
<body>
<div id="app">
</div>
<script type="text/babel" src="js/demo.jsx"></script>
</body>
</html>