IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React(一)——react初体验 -> 正文阅读

[JavaScript知识库]React(一)——react初体验

一、hello react

react使用的是jsx语法,其实基本上还是js语言,只是有一些区别,最后会写。

react初体验的大致分为三步:

1、引入react核心库和react-dom库,注意先引入核心库再引入react-dom

2、要引入bable来将jsx转为js?

3、script标签的type类型要改为text/babel

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="test"></div>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.0.0-beta.3/babel.js"></script>
    <script type="text/babel">
        const Vdom =
        <h1> hello react </h1>
        ReactDOM.render(Vdom, document.getElementById('test'))
    </script>
</body>

</html>

这里我们先创建了一个虚拟dom(也就是上面的vdom),然后通过ReactDOM.render方法渲染到test元素上

结果:

?

二、js和jsx创建虚拟dom

上面其实就是使用jsx的语法创建虚拟dom,下面我们来看使用js的方法创建虚拟dom。

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2、使用js创建虚拟dom</title>
</head>

<body>
    <div id="test"></div>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script type="text/javascript">
        const Vdom = React.createElement("h1",{id:"title"},"Hello Wsl")
        ReactDOM.render(Vdom, document.getElementById('test'))
    </script>
</body>

</html>

这里可以看到没有引入babel,标签也是JavaScript类型;这样虽然也可以创建虚拟dom,但是比较繁琐,特别是如果创建的虚拟动漫涉及到多层标签嵌套的时候,所以jsx其实就是为了让我们更方便的写react代码。

结果:

三、虚拟dom和真实dom

虚拟dom和真实dom有什么区别我们可以在控制台打印一下看看:

1、虚拟dom就是一个普通对象

2、虚拟dom没有真实dom那么多的属性,比较“轻”

3、虚拟dom最终会被react转化为真实dom

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3、虚拟dom和真实dom</title>
</head>

<body>
    <div id="test"></div>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.0.0-beta.3/babel.js"></script>
    <script type="text/babel">
        const Vdom =
        <h1> hello react </h1>
        ReactDOM.render(Vdom, document.getElementById('test'))
        console.log("虚拟dom",Vdom);
        console.log("真实dom",document.getElementById('test'));
    </script>
</body>

</html>

结果:

上面结果我们可以看出,真实dom的属性要比虚拟dom的多很多。?

四、jsx的语法规则

?jsx的语法规则:

1、定义虚拟dom时,不要在最外层写引号

2、标签混入js表达式时要用{}

3、样式类名,不要用class,要用className

4、内联样式,要用style={{key:value}}的样式去写

5、只用一个根标签

6、标签必须闭合

7、标签首字母

? ? ? 7.1、小写字母开头、将会转化为html中的同名元素,HTML中没有该元素,则报错(页面会显示)

? ? ? 7.2、大写字母开头、将会渲染对应的组件,若组件未定义,则报错(页面不会显示)

代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>4、jsx的语法规则</title>
    <style>
        .title{
            background-color: red;
        }
    </style>
</head>

<body>
    <div id="test"></div>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/babel-standalone/7.0.0-beta.3/babel.js"></script>
    <script type="text/babel">
        const msg = "hello Wsl";
        const Vdom = (
            <div>
                <h1 className="title"> <span style={{color:"#fff"}} id="title">{msg}</span> </h1>
                <h1 className="title"> <span style={{color:"#fff"}} id="title2">{msg}</span> </h1>
                <input type="text" />    
                <good>123</good>
                <Good>123</Good>
            </div>
        )
        ReactDOM.render(Vdom, document.getElementById('test'))

    </script>
</body>

</html>

结果:

删掉下面这行代码后:

?结果:

?这里报错信息就变成了good不是一个浏览器标签,可能是react的一个组件,如果是一个组件,请首字母大写。

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:24:08  更:2022-10-17 12:26:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:06:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码