1.什么是虚拟DOM? 虚拟DOM是组成应用程序UI的实际HTML元素的内存表示形式。重新渲染组件时,虚拟DOM会将更改与其DOM模型进行比较,以创建要应用的更新列表。主要优点是它高效,仅对实际DOM进行最小的必要更改,而不必重新渲染大块。 2.什么是JSX? JSX是JavaScript语法的扩展
原创 2022-05-12 17:59:01
141阅读
高级指南 1.深入JSX: 从本质上讲,JSX 只是为 React.createElement(component, props, ...children) 函数提供的语法糖。 因为 JSX 被编译为 React.createElement 的调用,所以 React 库必须在你 JSX 代码的作用域
原创 2021-09-01 14:14:24
137阅读
react 事件机制 React并不是将click事件绑定到了div的真实DOM上,而是在document处监听了所有的事件, 当事件发生并且冒泡到document处的时候,React将事件内容封装并交由真正的处理函数运行。 这样的方式不仅仅减少了内存的消耗,还能在组件挂在销毁时统一订阅和移除事件。 ...
转载 2021-09-27 12:01:00
244阅读
2评论
模拟dom,状态发生变化时,先在js对象上计算和比较,找出最小差异,然后将这些差异批量更新到真实dom。数据请求,事件监听,避免阻塞渲染,提升用户体验。初始渲染,更新成本。
转载 1月前
327阅读
1 ...
转载 2021-11-03 16:06:00
89阅读
2评论
React 的理解、特性 React 是靠数据驱动视图改变的一种框架,它的核心驱动方法就是用其提供的 setState 方法设置 state 中的数据从而驱动存放在内存中的虚拟 DOM 树的更新 更新方法就是通过 React 的 Diff 算法比较旧虚拟 DOM 树和新虚拟 DOM 树之间的 Change ,然后批处理这些改变。 遵循组件设计模式、声明式编程范式和函数式编程概念,以使前端应
原创 10月前
13阅读
Accessibility暂略代码分割import()The best way to introduce code-splitting into your app is through the dynamicimport()syntax.Before:import { add } from './math';console.log(add(16, 26));...
原创 2023-03-02 17:03:52
93阅读
react的diffi算法一直优化升级,现在又改为链表方式,diffi算法核心就是对比和修改,它的工作原理据于以下两条需求:两个不同类型的元素将产生两个不同的树; 同一级的一组子节点,可以从中埋入一个key属性用于区分;一、传统的diff算法是两棵树进行循环比较,那么它的比较次数就是O(n^2),n*n。二、React 15的Diff算法,针对以上两个需求,它有三种策略: (一)Tree Diff算法:Tree Diff 是两颗新旧虚拟树按照层级对应关系,把同一父节点的同一层级的节点遍.
原创 2021-06-02 13:56:18
965阅读
当大家考虑在项目中使用 react 的时候,第一个问题往往是他们的应用的速度和响应是否能和非 react 版一样,每当状态改变的时候就重新渲染组件的整个子树,让大家怀疑这会不会对性能造成负面影响。React 用了一些黑科技来减少 UI 更新需要的花费较大的 DOM 操作。 使用 production
转载 2020-09-22 14:13:00
110阅读
2评论
1. React developertools安装及使用 2. PropTypes与DefaultProps 讲一下PropTypes, 先拿TodoItem来说: 从几种类型中选: 3 props state 与 render函数的关系 页面是render函数渲染出来的 让props或者state
原创 2021-09-01 14:14:17
79阅读
React面试题总结内容主要包括基础知识,React 组件,React Redux,React 路由。 基本知识 1. 区分Real DOM和Virtual DOM Real DOM Virtual DOM 更新缓慢。 更新更快。 可以直接更新 HTML。 无法直接更新 HTML。 如果元素更新,则 ...
转载 2021-07-21 16:12:00
224阅读
2评论
参考:https://www.kancloud.cn/freya001/interview/1228068 001.React 中 setState 什么时候是同步的,什么时候是异步的?
转载 2021-06-28 14:09:52
154阅读
React上注册的事件最终会绑定在document这个DOM上,而不是React组件对应的DOM(减少内存开销就是因为所有的事heticEventrender(){return (
原创 2024-07-02 13:50:11
63阅读
React 性能优化的手段 React 中进行性能优化的手段可以从多个维度进行分类,以下是一些关键类别及其对应的优化策略: 组件优化 使用PureComponent或React.memo:对于仅根据props和state改变才重新渲染的组件,使用React.PureComponent或者对其包装一层React.memo,它们都能通过浅比较props来避免不必要的重新渲染。 shouldComp
原创 10月前
75阅读
diff的原理 React中的diff算法是其核心优化策略之一,用于比较新旧两个虚拟DOM树之间的差异,并找出最小化的DOM操作集以更新真实DOM。以下是React中diff算法的大致步骤概述: 树结构比较: React并不会简单地递归遍历整颗新旧虚拟DOM树进行全量比较,而是采用分层比较的思想,仅比较同层级的节点。 它首先会比较树的根节点,如果根节点不同,则直接替换整个根节点对应的真实DOM元素
原创 10月前
67阅读
React Hooks的理解 hooks的出现,使函数组件的功能得到了扩充,拥有了类组件相似的功能,在我们日常使用中,使用hooks能够解决大多数问题,并且还拥有代码复用机制,因此优先考虑hooks 解决老的函数式组件在React Hook出现之前,函数式组件(也称为无状态组件)的主要特点与优缺点如下: 早期函数式组件优点: 简洁性:函数式组件代码结构简单,易于阅读和理解,因为它仅负责接收pro
原创 10月前
90阅读
高阶组件 React 中的高阶组件(Higher-Order Component,简称 HOC)是一种高级React组件抽象概念,它本质上是一个函数,此函数接受一个React组件作为参数,并返回一个新的封装过的React组件。高阶组件主要用于代码复用、逻辑抽象和交叉关注点的处理,比如权限控制、数据预取、主题样式切换等场景。 什么是高阶组件: 在函数式编程的概念中,高阶函数是指接受函数作为输入或者
性能优化在哪个生命周期?原理? React 中进行性能优化的关键生命周期方法是 shouldComponentUpdate(nextProps, nextState),这是在类组件中可用的一个生命周期方法。另外,在函数组件中,可以通过 React.memo 或者 useMemo、useCallback Hooks 来实现相似的效果。 shouldComponentUpdate(nextProps,
原创 9月前
40阅读
1. React-Router的实现原理是什么 基于 hash 的路由:通过监听hashchange事件,感知 hash 的变化 改变 hash 可以直接通过 location.hash=xxx 基于 H5 history 路由: 改变 url 可以通过 history.pushState 和 resplaceState 等,会将URL压入堆栈,同时能够应用 history.go() 等 API
原创 9月前
32阅读
react-router 里的 Link 标签和 a 标签的区别 HTML <a> 标签: 原生HTML元素,点击后会触发浏览器的默认行为,即发送一个新的HTTP请求到指定的URL,页面会发生整页刷新。 通过 href 属性指定目标URL。 React Router <Link> 标签: 是React Router提供的一个组件,专为SPA(Single Page Appl
原创 9月前
54阅读
  • 1
  • 2
  • 3
  • 4
  • 5