首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【面试题】412- 35 道必须清楚 React 面试题

作者:Alex 译者:前端智 来源:dev.to 问题1:什么是虚拟DOM? 主题: React 难度: ⭐ 虚拟 DOM (VDOM)是真实 DOM 在内存表示。...主题: React 难度: ⭐⭐⭐ 在 HTML ,表单元素 、和通常维护自己状态,并根据用户输入进行更新。...包含表单组件将跟踪其状态输入值,并在每次回调函数(例如onChange)触发时重新渲染组件,因为状态更新。以这种方式由 React 控制其值输入表单元素称为受控组件。...使用 Flux 模式复杂用户界面不再遭受级联更新,任何给定React 组件都能够根据 store 提供数据重建其状态。Flux 模式还通过限制共享数据直接访问来加强数据完整性。...通过使用 React Profiler,可以在使用这些方法前后性能进行测量,从而确保通过进行给定更改来实际改进性能。 问题 33:什么是纯函数?

4.3K30

React常见面试题

)一行代码进行复用,render props无法做到如此简单 嵌套过深:render props 虽然摆脱了组件多层嵌套问题,但是转化为了函数回调嵌 参考资料: React Render Props...【hook执行位置】不要在循环、条件 、嵌套调有hook,必须始终在react函数顶层使用Hook,这是因为react需要利用调用顺序来正确更新相应状态,以及调用相应钩子函数,否则会导致调用顺序不一致性...; 如果渲染组件比较大,js执行会长时间占有主线程,会导致页面响应度变差,使得react在动画,手势等应用效果比较差; 实现过程及原理(核心理念就是:time slicing): 拆分:把渲染过程进行拆分成多个任务...检查:每次执行完一个任务,就去检查是否有新响应需要处理 继续执行:如果有就执行优化及更高响应事件,如果没有继续执行后续任务 # refs # reactrefs有什么用,使用场景?...【数据合并】多个setState会进行数据合拼,准备批量更新 【数据合并到组件的当前状态】生成新 react tree 【更新UI】比较使用diff算法,比较新旧 virtual dom,,最小化DOM

4.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

35 道咱们必须要清楚 React 面试题

主题: React 难度: ⭐⭐ 类组件可以使用其他特性,状态 state 和生命周期钩子。 当组件只是接收 props 渲染到页面时,就是无状态组件,就属于函数组件,也被称为哑组件或展示组件。...主题: React 难度: ⭐⭐⭐ 在 HTML ,表单元素 、和通常维护自己状态,并根据用户输入进行更新。...包含表单组件将跟踪其状态输入值,并在每次回调函数(例如onChange)触发时重新渲染组件,因为状态更新。以这种方式由 React 控制其值输入表单元素称为受控组件。...使用 Flux 模式复杂用户界面不再遭受级联更新,任何给定React 组件都能够根据 store 提供数据重建其状态。Flux 模式还通过限制共享数据直接访问来加强数据完整性。...通过使用 React Profiler,可以在使用这些方法前后性能进行测量,从而确保通过进行给定更改来实际改进性能。 问题 33:什么是纯函数?

2.5K21

react面试题整理2(附答案)

何在React中使用innerHTML增加dangerouslySetInnerHTML属性,并且传入对象属性名叫_htmlfunction Component(props){ return...(JIT)及进行热代码优化,或者 reflow 进行修正。...其状态state是在constructor像初始化组件属性一样声明。...这种组件在React中被称为受控组件,在受控组件,组件渲染出状态与它value或checked属性相对应,react通过这种方式消除了组件局部状态,使整个状态可控。...(注:这里之所以多次 +1 最终只有一次生效,是因为在同一个方法多次 setState 合并动作不是单纯地将更新累加。比如这里对于相同属性设置,React 只会为其保留最后一次更新)。

4.3K20

今年前端面试太难了,记录一下自己面试题

DOM 快么(Virtual DOM优势不在于单次操作,而是在大量、频繁数据更新下,能够对视图 进行合理、高效更新。)...Reactprops.children和React.Children区别在React,当涉及组件嵌套,在父组件中使用props.children把所有子组件显示出来。...(1)React16.8 加入hooks,让React函数式组件更加灵活,hooks之前,React存在很多问题:在组件间复用状态逻辑很难复杂组件变得难以理解,高阶组件和函数组件嵌套过深。...这种⼯具会维护⼀个全局状态⼼Store,并根据不同事件产⽣新状态嵌套关系组件通信方式?...里面的callback函数会在DOM更新完成后立即执行,但是会在浏览器进行任何绘制之前运行完成,阻塞了浏览器绘制.在 React ,refs 作用是什么Refs 可以用于获取一个 DOM 节点或者

3.7K30

React进阶

Fiber 会将一个大更新任务拆解为许多任务,使得渲染过程可以被打断,执行优先级更高任务。...在 Redux ,store 是一个单一数据源,而且是只读,action 是变化描述,reducer 负责接收 action,变化处理并更新 & 分发新状态。...在使用层面有着严格规则约束(不能嵌套在条件判断、循环中等) # 为什么不能将 Hooks 嵌套在条件判断等逻辑?...React16 + 采用 Fiber: 从架构角度来看,是 React 核心算法重写 从编码角度来看,是 React 内部所定义一种数据结构 从工作流角度来看,节点保存了组件需要更新状态和副作用...state 时,它就是一个无状态组件,无状态组件也有一些别名, “容器组件”、“展示组件” 等,它最核心特点就是:把数据处理和页面渲染这两个工作剥离开来 说到底,React 组件做事无非两件:

1.4K30

「大众点评点餐」程序开发经验 02:视图

程序模板,只能单向使用传入数据,不像 React 可以利用 props 让父子组件进行传值。 我们以单个菜品组件为例,看看如何在程序中使用模板: 6....此外,各个组件都有自定义特殊属性 组件 size 属性。你可以在官方文档查阅每个组件不同属性。...这样做,我们可以确保组件保持自身状态,并且提高列表渲染时效率。 程序组件渲染方式我们不得而知,只能对开发碰到一些问题来推测。...结合程序列表渲染 wx:key 解释,可知程序模板渲染属于第二种,数据更新时会根据 key 进行渲染优化。...将数据变动组件与数据不变组件进行拆分,减少数据更改带来组件更新量,将加减按钮和菜品信息分离。 使用动态加载等方式减小首屏渲染数据量,提升用户体验。

3K30

微信程序开发:前端隐藏按纽样式,嵌套按钮不影响其它元素样式

思路是直接在图片元素外嵌套一层不可见按钮就能解决了,通过设置还能忽略原本样式影响,就像什么都没有一样,点击图片照样触发按钮绑定事件。...语言和框架 Web 前端开发: 使用 HTML 、 CSS 和 JavaScript 进行开发,通常使用框架 React 、 Vue.js 、 Angular 等。...微信程序前端开发: 样式使用 WXSS 文件进行定义,也类似于 CSS ,但是只支持微信程序特定样式属性。 4....数据绑定 Web 前端开发: 数据和视图之间绑定通常由框架处理, React 状态属性。...微信程序前端开发: 页面的生命周期由微信程序框架控制,可以在对应生命周期函数编写相应逻辑。 6.

6400

我在工作React,学到了什么?性能优化篇

前言 我工作技术栈主要是 React + TypeScript,这篇文章我想总结一下如何在项目中运用 React 一些技巧去进行性能优化,或者更好代码组织。...,但是却会让 ChildNonTheme 这个不关心皮肤子组件,在皮肤状态更改时候也进行无效重新渲染。...Context 读写分离 - 在线调试 Context 代码组织 上面的案例,我们在子组件获取全局状态,都是直接裸用 useContext: import React from 'react' import...~ 组合 Providers 假设我们使用上面的办法管理一些全局状态,Provider 变越来越多了,有时候会遇到嵌套地狱情况: const StateProviders = ({ children...在需要情况下 Context 进行读写分离。 包装Context 使用,注意错误处理。 组合多个 Context,优化代码。 欢迎关注「前端从进阶到入院」,还有很多前端原创文章哦~

1K10

我在大厂写React学到了什么?性能优化篇

前言 我工作技术栈主要是 React + TypeScript,这篇文章我想总结一下如何在项目中运用 React 一些技巧去进行性能优化,或者更好代码组织。...,但是却会让 ChildNonTheme 这个不关心皮肤子组件,在皮肤状态更改时候也进行无效重新渲染。...setLogs 属性,所以两者任意一个发生变化,都会导致所有的订阅了 LogProvider 子组件重新渲染。...~ 组合 Providers 假设我们使用上面的办法管理一些全局状态,Provider 变越来越多了,有时候会遇到嵌套地狱情况: const StateProviders = ({ children...在需要情况下 Context 进行读写分离。 包装Context 使用,注意错误处理。 组合多个 Context,优化代码。

1.2K40

React 面试必知必会 Day7

style 属性接受一个驼峰命名法属性 JavaScript 对象,而不是一个 CSS 字符串。这与 DOM 风格 JavaScript 属性一致,更有效率,并能防止 XSS 安全漏洞。...当你使用 setState() 时,除了分配给对象状态外,React 还重新渲染组件和它所有子组件。你会得到这样错误:只能更新一个已挂载或正在挂载组件。...,并且是稳定React 将能够元素进行重新排序,而不需要像以前那样重新计算它们。...如何在 React 中使用装饰器? 你可以对你类组件进行装饰,这与将组件传入一个函数是一样。「装饰器」是修改组件功能灵活和可读方式。...有一些可用缓存库,可以用于函数组件。 例如,moize 库可以在另一个组件组件进行 memo 化。

2.6K20

React知识图谱

React知识图谱 图片 组件化 状态值:组件内用到,并且会发生更新,一旦状态更新,会引起组件重新渲染。...它可以让你在不编写 class 情况下使用 state 以及其他 React 特性。 规则1:不要在循环,条件或嵌套函数调用 Hook, 确保总是在你 React 函数最顶层调用他们。...recoil状态读写都是Hooks函数,目前没有提供类组件使用方式。 recoil是Facebook开发,可以使用React内部调度机制,这是redux和mobx不支持。...目前任何一个状态管理库都不是强制使用,也有很多精项目不使用第三方状态管理库,而只是使用React自身state、useContext等API就可以达到目的。...MemoryRouter:把 URL 历史记录保存在内存 (不读取、不写入地址栏)。在测试和非浏览器环境很有用,React Native。

29020

我在大厂写React学到了什么?性能优化篇

文末留言送两本性能优化书籍 前言 我工作技术栈主要是 React + TypeScript,这篇文章我想总结一下如何在项目中运用 React 一些技巧去进行性能优化,或者更好代码组织。...,但是却会让 ChildNonTheme 这个不关心皮肤子组件,在皮肤状态更改时候也进行无效重新渲染。...setLogs 属性,所以两者任意一个发生变化,都会导致所有的订阅了 LogProvider 子组件重新渲染。...~ 组合 Providers 假设我们使用上面的办法管理一些全局状态,Provider 变越来越多了,有时候会遇到嵌套地狱情况: const StateProviders = ({ children...在需要情况下 Context 进行读写分离。 包装Context 使用,注意错误处理。 组合多个 Context,优化代码。

90740

开始学习React js

1、ReactJS背景和原理 在Web开发,我们总需要将变化数据实时反应到UI上,这时就需要对DOM进行操作。...至于如何进行局部更新以保证性能,则是React框架要完成事情。...React推荐以组件方式去重新思考UI构成,将UI上每一个功能相对独立模块定义成组件,然后将组件通过组合或者嵌套方式构成大组件,最终完成整体UI构建。...对于MVC开发模式来说,开发者将三者定义成不同类,实现了表现,数据,控制分离。开发者更多是从技术角度来UI进行拆分,实现松耦合。...下面我们来编写一个例子,一个文本框和一个button,通过点击button可以改变文本框编辑状态,禁止编辑和允许编辑。通过这个例子来理解ReactJS状态机制。先看代码: ?

7.1K60

一看就懂ReactJs入门教程(精华版)

1、ReactJS背景和原理 在Web开发,我们总需要将变化数据实时反应到UI上,这时就需要对DOM进行操作。...至于如何进行局部更新以保证性能,则是React框架要完成事情。...React推荐以组件方式去重新思考UI构成,将UI上每一个功能相对独立模块定义成组件,然后将组件通过组合或者嵌套方式构成大组件,最终完成整体UI构建。...对于MVC开发模式来说,开发者将三者定义成不同类,实现了表现,数据,控制分离。开发者更多是从技术角度来UI进行拆分,实现松耦合。...下面我们来编写一个例子,一个文本框和一个button,通过点击button可以改变文本框编辑状态,禁止编辑和允许编辑。通过这个例子来理解ReactJS状态机制。

6.2K70

React性能优化总结

前言 目的 目前在工作,大量项目都是使用 react进行开展,了解掌握下 React 性能优化项目的体验和可维护性都有很大好处,下面介绍下在 React 可以运用一些性能优化方式;...在 React 里时间耗时最多一个地方是 Reconciliation(reconciliation 最终目标是以最有效方式,根据新状态更新 UI,我们可以简单地理解为 diff),如果不执行...下面举一个例子来辅助理解下: 比如要在你应用展示学生详细资料,每个学生都包含有多个属性姓名、年龄、爱好、身高、体重、家庭住址、父母姓名等;在这个组件场景,只需要展示学生姓名、年龄、住址...使用原则 当你觉得,被改变 State 或者 Props,不需要更新视图时,你就应该思考要不要使用它。 需要注意一个地方是:改变之后,又不需要更新视图状态,也不应该放在 State 。...fallback 属性接受任何在组件加载过程你想展示 React 元素。

77720

React --万物皆可组件

组件允许你将 UI 拆分为独立可复用代码片段,并每个片段进行独立构思。...React Element 就是在页面上展示内容,相当于一个 DOM 节点 React 一大核心就是--万物皆可组件 用户界面就是组件 组件可以嵌套包装组成复杂功能 组件可以用来实现副作用 一个复杂界面可以分割很很多简单组件...基本组成结构就是属性(props)加上一个渲染函数(render)。由于不涉及到状态更新,所以这种组件复用性也最强。例如在各UI库开发按钮、输入框、图标等等。...有状态组件通常会带有生命周期(lifecycle),用以在不同时刻触发状态更新。在写业务逻辑时常用到,不同场景所用状态和生命周期也会不同。...做为一个高阶组件,可以在原有组件基础上,其增加新功能和行为。打印日志,获取数据和校验数据等和展示无关逻辑时候,抽象出一个高阶组件,用以给基础组件增加这些功能,减少公共代码。

56420

一份react面试题总结

好处: 跨组件复用: 其实 render props / HOC 也是为了复用,相比于它们,Hooks 作为官方底层 API,最为轻量,而且改造成本,不会影响原来组件层次结构和传说中嵌套地狱;...to属性进行定向。...js实现一套dom结构,他作用是讲真实dom在js做一套缓存,每次有数据更改时候,react内部先使用算法,也就是鼎鼎有名diff算法dom结构进行对比,找到那些我们需要新增、更新、删除dom...节点,然后一次性真实DOM进行更新,这样就大大降低了操作dom次数。...React Router 4.0版本 hashHistory做了迁移,执行包安装命令 npm install react-router-dom后,按照如下代码进行使用即可。

7.4K20

前端react面试题(边面边更)

状态state是在constructor像初始化组件属性一样声明。...,更新状态(dispatch(action)); o 支持订阅store变更(subscribe(listener));异步流∶ 由于Redux所有store状态变更,都应该通过action触发...适用observable保存数据,数据变化后自动处理响应操作redux使用不可变状态,这意味着状态是只读,不能直接去修改它,而是应该返回一个新状态,同时使用纯函数;mobx状态是可变,可以直接进行修改...React Hooks 限制主要有两条:不要在循环、条件或嵌套函数调用 Hook;在 React 函数组件调用 Hook。那为什么会有这样限制呢?...,而是给react,大概作用就是给每一个reactNode添加一个身份标识,方便react进行识别,在重渲染过程,如果key一样,若组件属性有所变化,则react更新组件对应属性;没有变化则不更新

1.2K50

React入门系列(六)组件间通信

1.通过props 向子组件传递需要信息 2.使用 context 来实现跨级父子组件间通信 没有嵌套关系组件通信 自定义事件机制(eg: 发布/订阅模式) 适用于上述所有方式 利用数据管理框架...方法,更新组件B状态值this.setState({text: event.target.value});。...2.Context ** Context 提供了一个无需为每层组件手动添加 props,就能在组件树间进行数据传递方法。...利用Redux或Mobx等状态管理库 状态管理库不要滥用,一般,满足如下两个条件状态才适合用状态管理库管理: 这个状态需要在多个组件共享 组件被卸载之后重新加载时,之前状态需要被保留 小结 到了这里...可见,react框架涉及到API和内置属性并不多,它难点在于如何将一个UI界面合理分割为若干组件进行组合嵌套,并且,数据如何在组件间传递,变化。 微信公众号:

98710
领券