react原理及合成事件原理

news/2024/7/15 18:36:12 标签: react.js, javascript, 前端

文章目录

  • react的理解
  • react创建组件的三种写法
  • react的工作原理
  • 初始化的渲染流程。
  • 页面更新的流程。
  • diffing 算法计算更新视图
    • diff策略
  • react合成事件原理
    • 一、React合成事件的概念
    • 二、React合成事件的原理
    • 三、React合成事件的优势
    • 四、React合成事件的使用方法
    • 五、总结

react的理解

  1. 采用声明式渲染,函数式编程,声明显示内容,react自动完成
  2. 通过虚拟DOM,减少与DOM的交互
  3. 单向数据流,从父节点传递到子节点,父节点改变,子节点重新渲染,遵循不可变数据。
  4. 提高代码的复用率,通过react构建组件,让代码更容易得到复用
  5. react类组件使用render()方法或函数式组件return,接受输入的数据并返回需要展示的内容
  6. 代码可读性高
  7. 可以做劫持渲染(shouldcomponentupdate)

react创建组件的三种写法

  1. React.createClass
  2. React.Component
  3. 无状态的函数写法(纯组件)

react的工作原理

react的响应式理念,通过改变函数的data值,改变ui。实现一个组件或者功能需要先实现一个函数,改变函数的data值,来影响ui

初始化的渲染流程。

  • react用jsx语法写好逻辑。
  • 执行 ReactDOM.render 函数,渲染出虚拟DOM。
  • react 将虚拟DOM,渲染成真实的DOM。

页面更新的流程。

  1. 当页面需要更新时,通过声明式的方法,调用 setState 告诉 react什么数据变了。
  2. react 自动调用组件的 render 方法,渲染出虚拟 DOM。
  3. react 会通过 diffing 算法,对比当前虚拟 DOM 和需要更新的虚拟 DOM 有什么区别。然后重新渲染区别部分的真实 DOM

diffing 算法计算更新视图

render()调用后视图发生了变化,根据状态和jsx结构生成新的虚拟DOM,同级比较两棵虚拟DOM树的差异,得到差异对象,把差异对象应用到真正的DOM树上。

diff策略

1、tree diff
按照树的层级进行比较,如果该节点不存在,则整个删除,不再继续比较。
如果是跨层级的话,只有创建节点和删除节点的操作
2、component diff
每一层中组件的对比,同一类型的两个组件,按照层级比较虚拟DOM。组件A变化为组件B时,可能虚拟DOM没有任何变化,可以通过shouldComponentUpdata()来判断是否需要判断计算;不同类型的组件,将一个(将被改变的)组件判断为dirtycomponent(脏组件),从而替换整个组件的所有节点
3、element diff
如果两个组件类型相同,则需要对比组建中的元素。删除,插入,移动节点

同一组件中key的要素
1、通过key保证节点的唯一性,避免了重复渲染。如果key相同,则不需要重新计算并渲染。
2、key值是固定的,一般key值不用数组的下表索引值,当数组发生变化是,索引值会改变。

原文链接:https://blog.csdn.net/Jasmine_jieer/article/details/126404865

react合成事件原理

React是-个流行的JaaScript库,用构建用户界面。它采用了一种特殊的事件处理机制,即React合成事件。本文将详细个绍React合成事件的原理及其重要性。

一、React合成事件的概念

React合成事件是指React通过在浏览器上绑定一系列事件处理函数,来处理用户与界面的交互行为。它的设计目标是提供一种高效、跨浏览器的事件系统,同时也解决了传统原生事件处理中一些常见的问题。

二、React合成事件的原理

1.事件委托:React合成事件利用了事件委托的机制,将事件绑定在顶层的容器上,而不是每个具体的元素上。这样做的好处是减少了事件处理函数的数量,提高了性能
2.事件池: React合成事件使用了事件池的概念。事件池是一个复用的对象池,用于存储事件对象。当事件被触发时React会从事件池中取出一个事件对象,并将相关信息填充到该对象中,然后传递给事件处理函数。事件处理函数执行完毕后,事件对象会被重置并放回事件池中,供下次使用。
3.统一化事件处理: React合成事件封装了原生事件对象,提供了一套统一的AP1,使得事件处理函数在不同浏览器下表现一致。这样开发者无需关心浏览器兼容性的问题,可以更专注于业务逻辑的实现。

三、React合成事件的优势

1.性能优化:由于利用了事件委托和事件池的机制,React合成事件大大减少了事件处理函数的数量,提高了性能。另外,事件池的复用机制也减少了对象的创建和销毁,进一步减少了内存消耗
2.事件处理函数的统一性: React合成事件封装了原生事件对象,并提供了一致的API,使得开发者可以更方便地处理事件。这对于跨浏览器的开发是非常重要的。
3.防上事件冒泡: React合成事件默认会阻止事件冒泡,这在一些场景下非常有用。开发者可以通过调用event.stopPropagation(来手动阻止事件冒泡。

四、React合成事件的使用方法

使用React合成事件非常简单。开发者只需在元素上绑定事件处理函数即可。例如,要为一个按钮添加点击事件处理区数,可以使用以下代码:


import React from 'react!.
class MyButton extends React.Component {
handleClick = (event) => [
console.log(按钮被点击了!;
render() [
return (
<button onClick={this.handleClickI>点击我</button>

在上述代码中,我们在按钮元素上绑定了一个点击事件处理函数handleClick。当按钮被点击时,控制台将会输出"按钮被点击了!"。

五、总结

React合成事件是React框架中非常重要的一部分,它通过事件委托、事件池和统一化事件处理等机制,提供了高效、跨浏览器的事件系统。使用React合成事件可以有效地提高性能,简化开发流程,并保证事件处理函数在不同浏览器下的致性。因此,掌握React合成事件的原理和使用方法对于React开发者来说是非常重要的。

简单说就是:react是在原生浏览器的枝上做了一层封装,把对应事件做了一次合成,最大的好处是合成事件可以匹配不同浏览器之间的差异,比如事件委托、事件池、事件合并这些


http://www.niftyadmin.cn/n/5204646.html

相关文章

【Mysql】[Err] 1293 - Incorrect table definition;

基本情况 SQL文件描述 /* Navicat MySQL Data TransferSource Server : cm4生产-200 Source Server Version : 50725 Source Host : 192.168.1.200:3306 Source Database : db_wmsTarget Server Type : MYSQL Target Server Version : 50725 File…

什么是持续部署

管理软件开发和部署有 3 种常见的方法&#xff1a;持续集成、持续交付&#xff0c;然后是持续部署。尽管它们经常被混淆&#xff0c;但它们是明显不同的。 正如您将在本文后面看到的&#xff0c;它们相互融合&#xff0c;并补充彼此的风格。但这篇文章并不是关于他们三个。今天…

人机交互——机器人形态

1.聊天机器人 2.任务型机器人 3.面向FAQ的问答机器人 4.面向KB的问答机器人

60V降压恒流芯片 高调光比LED驱动器 SL6015B替代PT4115 电路简单

在LED照明领域&#xff0c;降压恒流芯片是一种非常重要的芯片&#xff0c;它可以将输入的电压降低并输出稳定的电流&#xff0c;从而为LED灯提供合适的驱动电源。其中&#xff0c;SL6015B是一款非常优秀的降压恒流芯片&#xff0c;它具有高调光比、简单的电路设计、低成本的优点…

HarmonyOS应用开发者认证题目满分指南

为了帮助大家快速的上手HarmonyOS应用程序开发&#xff0c;官方制作了一些免费的课程&#xff1a;HarmonyOS第一课。每个课程后面都有一些练习题&#xff0c;下面就是这些题目的满分答案。 【习题】运行Hello World工程 判断题 1.DevEco Studio是开发HarmonyOS应用的一站式集…

从零开始的c语言日记day36——指针进阶

一、什么是指针: 指针的概念:1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。 ⒉指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型&#xff0c;指针的类型决定了指针的-整数的步长&#xff0c;指针解引用操作的时候的权限。…

PostgreSQL10安装postgis插件

1.安装pgsql10 2.下载插件&#xff0c;以Windows为例&#xff0c;地址&#xff1a;Index of /postgis/windows/pg10/ 3.安装插件&#xff0c;直接安装&#xff0c;和pgsql的目录相同即可&#xff0c;一直下一步 4.安装之后&#xff0c;需要执行sql打开 CREATE EXTENSION po…

国际版Amazon Lightsail的功能解析

Amazon Lightsail是一项易于使用的云服务,可为您提供部署应用程序或网站所需的一切,从而实现经济高效且易于理解的月度计划。它是部署简单的工作负载、网站或开始使用亚马逊云科技的理想选择。 作为 AWS 免费套餐的一部分&#xff0c;可以免费开始使用 Amazon Lightsail。注册…