基本使用

<body>
    <div id="test"></div>
    <!-- 核心库 -->
    <script src="../../js/react.development.js"></script>
    <!-- 提供DOM操作的扩展库 -->
    <script src="../../js/react-dom.development.js"></script>
    <!-- 解析JSX语法代码转为纯JS -->
    <script src="../../js/babel.min.js"></script>
    <script type='text/babel'> // 告诉babel.js解析里面的jsx代码
    // 1. 创建虚拟DOM元素对象
    var vDom = <h1>Hello React!</h1>
    // 2. 将虚拟DOM渲染到真实的DOM容器中
    ReactDOM.render(vDom, document.getElementById('test'))
    </script>
</body>

image-20201114082933546

JSX理解和基本使用

JSX全程为JavaScriptXML,用于创建react虚拟DOM对象。

<body>
    <div id="test1"></div>
    <div id="test2"></div>
    <!-- 核心库 -->
    <script src="../../js/react.development.js"></script>
    <!-- 提供DOM操作的扩展库 -->
    <script src="../../js/react-dom.development.js"></script>
    <!-- 解析JSX语法代码转为纯JS -->
    <script src="../../js/babel.min.js"></script>
    <script>
        var msg = 'Hello React'
        var MyId = 'MyId'
        // 1. 创建虚拟DOM元素对象
        var vDom1 = React.createElement('h2', { id: MyId.toLowerCase() }, msg.toLowerCase())
        // 2. 将虚拟DOM渲染到真实的DOM容器中
        ReactDOM.render(vDom1, document.getElementById('test1'))
    </script>
    <script type='text/babel'> // 告诉babel.js解析里面的jsx代码
        // 1. 创建虚拟DOM元素对象
        var vDom2 = <h3 id={MyId.toUpperCase()}>{msg.toUpperCase()}</h3>
        // 2. 将虚拟DOM渲染到真实的DOM容器中
        ReactDOM.render(vDom2, document.getElementById('test2'))
    </script>
</body>

image-20201114084721027

babel将jsx代码转化为纯js代码。

创建虚拟DOM有两种方式

  1. React.createElement()

    React.createElement('h2', { id: MyId.toLowerCase() }, msg.toLowerCase())
    • 第一个参数

      表示需要创建的标签名

    • 第二个参数

      表示该标签的属性

    • 第三个参数

      表示该标签的值

  2. jsx语法

    <h3 id={MyId.toUpperCase()}>{msg.toUpperCase()}</h3>

    遍历使用{}语法包裹即可。

遍历数组

<div id="test"></div>
<!-- 核心库 -->
<script src="../../js/react.development.js"></script>
<!-- 提供DOM操作的扩展库 -->
<script src="../../js/react-dom.development.js"></script>
<!-- 解析JSX语法代码转为纯JS -->
<script src="../../js/babel.min.js"></script>

<script type='text/babel'> // 告诉babel.js解析里面的jsx代码
    const names = ['JQuery', 'zeptp', 'angular', 'vue', 'react']
    // 1. 创建虚拟DOM元素对象
    var vDom = (
      <ul>
        // 将数组遍历
        {names.map((name, index) => <li key={index}>{name}</li>)}
    </ul>
    )
    // 2. 将虚拟DOM渲染到真实的DOM容器中
    ReactDOM.render(vDom, document.getElementById('test'))
</script>

image-20201114085834911