heart 板


LINE

问:能否简单说一下React .js 框架的原理或是技术主轴?我看了一堂课但不太意会。 别担心,React.js 的原理和技术主轴其实可以简单地理解。让我用几个关键概念来解释一 下: **1. 组件化 (Component-Based Architecture):** 你可以把 React 应用程式想像成是由许多独立且可重复使用的「组件」拼凑而成。每个组 件就像一个小小的乐高积木,负责处理一部分的使用者介面 (UI) 和互动逻辑。 * **独立性:** 每个组件都有自己的状态 (data) 和行为 (functions),不会互相干扰。 * **可重用性:** 你可以在应用程式的不同地方重复使用相同的组件,减少程式码的撰写 量。 * **易於维护:** 当你需要修改某个功能时,只需要修改对应的组件,不会影响到其他部 分。 **想像一下:** 你在制作一个购物网站。你可以有「商品列表组件」、「商品详细资讯组 件」、「购物车组件」等等。每个组件专注於自己的任务,并且可以被独立开发和测试。 **2. 虚拟 DOM (Virtual DOM):** 这是 React 最核心的概念之一,也是它高效能的关键。 * **传统 DOM 的问题:** 当网页的资料改变时,浏览器需要重新渲染整个 DOM (Document Object Model),这个过程非常耗时且效率低下。 * **虚拟 DOM 的解决方案:** React 在记忆体中维护一个轻量级的 DOM 副本,称为虚拟 DOM。当资料改变时,React 会先在虚拟 DOM 上进行比对 (称为 "diffing"),找出实际需 要更新的部分。 * **批量更新:** React 会将所有需要更新的部分合并成一个批次,然後一次性地更新真 实 DOM。这样可以大幅减少浏览器的重绘次数,提升效能。 **想像一下:** 你有一张写满文字的纸 (真实 DOM)。每次你修改一个字,你都必须重新抄 写整张纸。而虚拟 DOM 就像是你的草稿纸。你先在草稿纸上修改,然後只把最终修改过的 部分誊写到正式的纸上,这样效率就高多了。 **3. 声明式语法 (Declarative Syntax):** React 鼓励你描述你想要呈现的 UI *是什麽*,而不是 *如何* 操作 DOM 来达到这个结果 。 * **命令式语法 (Imperative):** 你需要一步一步地告诉电脑如何修改 DOM (例如:找到 这个元素 -> 修改它的文字 -> 修改它的样式)。 * **声明式语法 (Declarative):** 你只需要描述在不同资料状态下,UI 应该呈现什麽样 子。React 会自动帮你处理 DOM 的更新细节。 **想像一下:** 你在告诉朋友你想画一棵树。 * **命令式:** 「先画一条垂直的线,然後在顶端画一些弯曲的线代表树枝,再画很多绿 色的圆圈代表树叶...」 * **声明式:** 「画一棵绿色的、茂盛的树。」 React 让你以更直观的方式描述 UI,而不需要关心底层的 DOM 操作。 **4. 单向资料流 (One-way Data Binding):** 在 React 中,资料通常是单向地从父组件流向子组件。 * **资料流动:** 资料透过 props (properties) 从父组件传递给子组件。 * **事件处理:** 子组件可以透过回呼函数 (callbacks) 将事件通知给父组件,然後父组 件再根据这些事件更新自己的状态,并将新的资料传递给子组件。 这种单向资料流有助於追踪资料的变化,让应用程式的状态更容易管理和预测。 **想像一下:** 水从高处流向低处 (父组件到子组件)。子组件不能直接改变父组件的水流 ,但可以发出信号 (透过回呼函数),请求父组件改变水源头的水量。 **总结来说,React.js 的核心原理和技术主轴可以归纳为:** * **使用组件化的方式来构建 UI。** * **透过虚拟 DOM 来提升渲染效能。** * **采用声明式语法来描述 UI。** * **遵循单向资料流来管理应用程式的状态。** 希望这个简单的解释能帮助你更好地理解 React.js 的基本概念!如果你还有其他问题,随 时可以再问我。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.162.107 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/heart/M.1745030154.A.8C0.html







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP