| |
|
开发:
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 中的 元素 vs 组件 -> 正文阅读 |
|
[JavaScript知识库][React 基础系列] React 中的 元素 vs 组件 |
在这次复习官方教程之前,我还没意识到 元素(element) 和 组件(component) 在 React 中的定义还是有些不太一样的。通俗理解就是,组件是由元素所构成的。 第一个复习的系列是 JSX 的内容:什么是 JSX,以及如何使用 JSX 元素官网上是这么描述元素的:
直白的说法就是,元素是 React 应用中可被创建的最基本的组成部分,没有比元素更小的组成部分了。依旧是用
效果如图下: ![]() 这么看来,元素的写法其实还颇有一种, 在这个案例中,如果想要渲染一个 元素的渲染在上一篇 什么是 JSX 部分中曾经讲过,其实 JSX 最终会被编译成一个 JavaScript 对象,如:
单纯的 JavaScript 对象是没有办法直接被渲染到页面上的,因此它需要借助另一个函数——
其中,
完整的页面结构为:
元素的更新React 的很多核心设计都是基于不可变性,React 中的元素也是如此。这也就意味着一旦一个 React 的元素被创建成功之后,元素的属性、子元素便无法被更新,而唯一更新 UI 的方式就是创建一个新的元素,并且将新的元素传入到 如果 React 只是在每一次有 UI 变动时,就更新一次完整的 DOM 树,那么这就和传统非常耗时的 DOM 操作没什么区别。 不过,React 内部有自己的更新机制,能够很好的对操作 DOM 进行优化,减少无意义的重复渲染造成的性能损耗。 Virtual DOMVirtual DOM 就是 React 实现的 DOM 更新优化机制,它将 DOM 树进行虚拟化的操作后存入内存之中。虚拟的 DOM 树与真实的 DOM 树会通过如 ReactDOM 之类的库进行连接。 使用虚拟 DOM 树的优点非常的明显,在对 DOM 进行操作时,直接更新原有的 DOM 树是非常耗时的操作。但是 ReactDOM 会对两棵树——虚拟 DOM 树和真实 DOM 树进行对比,只重新渲染更新过的 DOM 节点,这样就能够省去大量无意义的重新渲染,从而提升性能。 对于 React 团队来说,他们的理念是专注于当下的页面看起来应当是什么模样,而非如何在未来更新 UI。 组件组件拥有以下几个特性:
和 元素 对比一下:
能够很明显的发现,元素的概念是一个 JavaScript 的对象;而组件的概念类似于一个 JavaScript 的函数。
组件的渲染以案例中的 ![]() 原因是因为外部没有传进 现在,就将
这时候,页面显示的就是更有意义的内容: ![]() 组合组件传统意义上来说,组合组件有这么会有 父子 和 兄弟 这两种关系。 父子组件父子组件也就是在组件之中继续嵌套一个组件,例如说一个主页面中可以嵌套一个导航栏和正文内容:
效果图如下: ![]() 这个页面的结构如下:
这其中, 兄弟组件同样是上面的案例, 在 React 之中,数据是单向传输的,只能通过 props 从 父 传到 子,兄弟之间也无法交换信息。所以 另外,要渲染兄弟组件有以下几种方式:
组件的提取如何合理地对组件进行提取以达到更好的复用性,一直都是一个比较复杂的问题。根据 React 的官方建议来说,当组件满足以下两个特性,就代表这个部分可以被提取成单独的组件:
总结本章学习内容主要学习了一下 元素 和 组件,知识点包括:
下一章的学习将会注重与组件的状态管理以及生命周期。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/19 10:01:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |