React 组件生命周期 在本章节中我们将讨论 React 组件的生命周期。 组件的生命周期可分成三个状态: Mounting:已插入真实 DOM Updating:正在被重新渲染 Unmounting:已移出真实 DOM 生命周期的方法有: componentWillMount 在渲染前调用,在客 ...
转载
2021-10-27 11:18:00
299阅读
2评论
本文整理了React核心面试题,涵盖基础概念、生命周期、Hooks和性能优化等关键知识点。重点介绍了JSX语法、组件生命周期方法、常用Hooks(useState、useEffect等)的使用技巧,以及通过React.memo、useCallback等优化性能的方法。文章还对比了不同状态管理方案,帮助开发者深入理解React特性和最佳实践,为面试和实际开发提供实用指导。
模拟dom,状态发生变化时,先在js对象上计算和比较,找出最小差异,然后将这些差异批量更新到真实dom。数据请求,事件监听,避免阻塞渲染,提升用户体验。初始渲染,更新成本。
react 事件机制 React并不是将click事件绑定到了div的真实DOM上,而是在document处监听了所有的事件, 当事件发生并且冒泡到document处的时候,React将事件内容封装并交由真正的处理函数运行。 这样的方式不仅仅减少了内存的消耗,还能在组件挂在销毁时统一订阅和移除事件。 ...
转载
2021-09-27 12:01:00
244阅读
2评论
对 React 的理解、特性
React 是靠数据驱动视图改变的一种框架,它的核心驱动方法就是用其提供的 setState 方法设置 state 中的数据从而驱动存放在内存中的虚拟 DOM 树的更新
更新方法就是通过 React 的 Diff 算法比较旧虚拟 DOM 树和新虚拟 DOM 树之间的 Change ,然后批处理这些改变。
遵循组件设计模式、声明式编程范式和函数式编程概念,以使前端应
2021前端react高频面试题汇总1.ReactRouter的实现原理是什么?客户端路由实现的思想:基于hash的路由:通过监听hashchange事件,感知hash的变化改变hash可以直接通过location.hash=xxx基于H5history路由:改变url可以通过history.pushState和resplaceState等,会将URL压入堆栈,同时能够应用history.go()
原创
2021-12-07 12:54:04
330阅读
对ReactSSR的理解服务端渲染是数据与模版组成的html,即HTML=数据+模版。将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序。页面没使用服务渲染,当请求页面时,返回的body里为空,之后执行js将html结构注入到body里,结合css显示出来;SSR的优势:对SEO友好所有的模版、图片等资源都存在服务器端一个html返回所有数
原创
2022-09-13 13:55:13
138阅读
前端面试题之React篇一、组件基础1. React 事件机制2. React的事件和普通的HTML事件有什么不同?3. React 组件中怎么做事件代理?它的原理是什么?4. React 高阶组件、Render props、hooks 有什么区别,为什么要不断迭代
转载
2021-06-03 13:36:41
1304阅读
当调用setState的时候,发生了什么操作?当调用setState时,React做的第一件事是将传递给setState的对象合并到组件的当前状态,这将启动一个称为和解(reconciliation)的过程。和解的最终目标是,根据这个新的状态以最有效的方式更新DOM。为此,React将构建一个新的React虚拟DOM树(可以将其视为页面DOM元素的对象表示方式)。一旦有了这个DOM树,为了弄清DO
原创
2022-09-14 08:07:26
238阅读
【前端高频面试题】- React篇1. 请说说 React 的核心概念有哪些?React 核心概念围绕“组件化”和“高效渲染”设计,核心包括以下几点:组件(Component):React 应用的基本构建块,分为函数组件(推荐)和类组件,负责封装 UI 结构和逻辑,实现复用。JSX:JavaScri ...
可以使用TypeScript写React应用吗?怎么操作?(1)如果还未创建CreateReactApp项目直接创建一个具有typescript的CreateReactApp项目:javascriptnpxcreatereactappdemotypescript(2)如果已经创建了CreateReactApp项目,需要将typescript引入到已有项目中通过命令将typescript引入项目:j
原创
2022-09-14 10:39:40
877阅读
1、什么是微服务?(暗藏杀机)2、什么是微服务扩展性和高可用-可扩展性、高可用性和性能3、架构师在微服务架构中的角色是什么?决定整个软件系统的布局。 帮助确定组件的分区。 为开发微服务的团队提供某些工具和技术的建议。 提供技术治理,以便技术开发团队遵循微服务原则。4、什么是 CI 持续集成5、什么是Canary Releasing?说说你在项目中的应用一种降低在生产中引入新软件版本的风险的技术,通
转载
2024-04-06 22:08:57
64阅读
当今最流行的框架非 React莫属。 React以其岀色的性能,颠覆了互联网的理念,简单的开发方式受到许多开发者的青睐。因此,在 React中,虚拟DOM、组件的生命周期、组件的通信、组件的约束性,配合 Reflux、 Redux等框架的使用,基于 EMAScript6语法开发,以及 Webpack编译等都是读者要掌握的内容。当然, React的三大特色(虚拟DOM、组件开发、多端适配)的具体实现
原创
2022-11-08 12:59:51
920阅读
redux中间件中间件提供第三方插件的模式,自定义拦截actionreducer的过程。变为actionmiddlewaresreducer。这种机制可以让我们改变数据流,实现如异步action,action过滤,日志输出,异常报告等功能reduxlogger:提供日志输出reduxthunk:处理异步操作reduxpromise:处理异步操作,actionCreator的返回值是promise对
原创
2022-09-14 07:33:23
225阅读
ref是一个函数又有什么好处?方便react销毁组件、重新渲染的时候去清空refs的东西,防止内存泄露解释React中render()的目的。每个React组件强制要求必须有一个render()。它返回一个React元素,是原生DOM组件的表示。如果需要渲染多个HTML元素,则必须将它们组合在一个封闭标记内,例如<form、<group、<div等。此函数必须保持纯净,即必须每次调用时都返回相同的
原创
2022-09-14 10:38:51
131阅读
在React中,类组件基于ES6,所以在constructor中必须使用super在调用super过程中,无论是否传入props,React内部都
原创
2024-05-29 10:55:28
58阅读
提高组件的渲染效率的?避免不必要的render?
在React中提高组件渲染效率并避免不必要的渲染主要有以下几个策略:
使用PureComponent或React.memo:
React.PureComponent自动进行浅比较(shallow comparison),只有当props或state发生改变时才会触发组件重新渲染。继承自React.PureComponent的组件会默认检查props
受控组件和非受控组件
React 受控组件(Controlled Components):
受控组件是指组件内部的状态完全由React的state管理,用户输入的值立即反映到组件的state中。在受控组件中,表单元素(如<input>、<textarea>或<select>)的值不是直接由DOM本身管理,而是通过React组件的state进行控制。例如,<
React.PureComponent 和React.memo
React.PureComponent
应用场景:React.PureComponent 是一个内置的类组件,它继承自 React.Component,并且重写了 shouldComponentUpdate 生命周期方法,用于决定何时需要更新组件。
原理:shouldComponentUpdate(nextProps, nextSta
React面试题总结内容主要包括基础知识,React 组件,React Redux,React 路由。 基本知识 1. 区分Real DOM和Virtual DOM Real DOM Virtual DOM 更新缓慢。 更新更快。 可以直接更新 HTML。 无法直接更新 HTML。 如果元素更新,则 ...
转载
2021-07-21 16:12:00
224阅读
2评论