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

React常见面试题

,函数式编程思想 数据可变,双向数据绑定,(组件和DOM之间的),响应式设计 设计思想 all in js (html->jsx, css->style-component/jss) html,,css...useEffect可以让你在函数组件执行副使用(数据获取,设置订阅,手动更改React组件的DOM)操作 默认情况下每次函数加载完,都会执行(不要在此修改state,避免循环调用),useEffect...使用场景: 订阅外部数据源(防止数据泄露) 设置页面标题,返回重置原标题 # useEffect和useLayoutEffect区别?...useEffect相比componentDidMount/componentDidUpdate不同之处在于,使用useEffect调度的effect不会阻塞浏览器更新屏幕,这让应用响应更快,大多数据情况下...; 如果渲染的组件比较大,js执行会长时间占有主线程,会导致页面响应度变差,使得react动画,手势等应用效果比较差; 实现过程及原理(核心理念就是:time slicing): 拆分:把渲染过程进行拆分成多个小任务

4.1K20

React 性能优化完全指南,将自己这几年的心血总结成这篇!

实现优先级更新的要点是将耗时任务移动到下一个宏任务执行,优先响应用户行为。...搜索场景,只需响应用户最后一次输入,无需响应用户的中间输入值,debounce 更适合使用在该场景。...实时响应用户操作场景,如果回耗时小,甚至可以用 requestAnimationFrame 代替 throttle。 懒加载 SPA ,懒加载优化一般用于从一个路由跳转到另一个路由。...所以开发过程,遇到接口返回的是所有数据时,需提前预防这类 bug,使用虚拟列表优化。 跳过回函数改变触发的 Render 过程 React 组件的 Props 可以分为两类。...当某个接口存在缓存数据时,use-swr 会先使用该接口的缓存数据,并在 requestIdleCallback 时再重新发起请求,获取最新数据

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

react高频面试题总结(一)

除了高帧率动画, Vue 其他的场景几乎都可以使用防抖和节流去提高响应性能。...请说岀 React从 EMAScript5编程规范到 EMAScript6编程规范过程的几点改变。主要改变如下。(1)创建组件的方法不同。...(1)setState() setState()用于设置状态对象,其语法如下:setState(object nextState[, function callback])复制代码nextState,将要设置的新状态...该函数会在setState设置成功,且组件重新渲染调用。合并nextState和当前state,并重新渲染组件。setState是React事件处理函数中和请求回函数触发UI更新的主要方法。...callback,可选参数,回函数。该函数会在replaceState设置成功,且组件重新渲染调用。

1.3K50

helux 2 发布,助你深度了解副作用的双调用机制

的方式去变更状态,如用户设置enableReactive为true,则可创建响应式对象const { state, setState } = createShared({ a: 100, b: 2 }...新增信号记录(实验)内部新增了信号相关的记录数据,为将来要发布的helux-signal(一个基于helux封装的react signal模式实现库)做好相关基础建设,helux-signal还在原型阶段...、useLayoutEffectv2版本新增了useEffect,useLayoutEffect两个接口,这也是本文要重点讨论的两个接口,为何helux提供这两个接口来替代原生接口呢?...用户们开始从代码层面入手,准确的说是useEffect里入手使用useRef标记执行状态大体思路是使用useRef记录一个副作用函数是否已执行的状态,让第二次调用被忽略。...isCalled无法控制,按思维会副作用清理函数里置isCalled.current为false,这样组件的存在期过程变更id值时,尽管有双调用行为也不会打印两次mock api fetch React.useEffect

70660

滴滴前端二面必会react面试题指南_2023-02-28

但是对于合成事件来说,有一个事件池专门来管理它们的创建和销毁,当事件需要被使用时,就会从池子复用对象,事件回结束,就会销毁事件对象上的属性,从而便于下次复用事件对象。...这是由于 React 16.4^ 的版本 setState 和 forceUpdate 也会触发这个生命周期,所以当组件内部 state 变化,就会重新走这个方法,同时会把 state 值赋值为...(4)componentDidMount() componentDidMount()会在组件挂载(插入 DOM 树)立即。...除了高帧率动画, Vue 其他的场景几乎都可以使用防抖和节流去提高响应性能。 类组件和函数组件有何不同?...this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。 提到函数式编程就要提一个概念:纯函数。

2.2K40

美团前端一面必会react面试题4

受控组件更新state的流程:可以通过初始state设置表单的默认值每当表单的值发生变化时,调用onChange事件处理器事件处理器通过事件对象e拿到改变的状态,并更新组件的state一旦通过setState...useEffect(callback, source)接受两个参数callback: 钩子回函数;source: 设置触发条件,仅当 source 发生改变时才会触发;useEffect钩子没有传入...source参数时,默认每次 render 时都会优先调用上次保存的回返回的函数,再重新调用回useEffect(() => { // 组件挂载执行事件绑定 console.log...componentDidMount方法的代码,是组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。此外,在这方法调用setState方法,会触发重新渲染。...componentWillMountfetch data,数据一定在render才能到达,如果忘记了设置初始状态,用户体验不好。

3K30

10分钟教你手写8个常用的自定义hooks

state,另一个参数是更新的回函数,如下面的用法: this.setState({num: 1}, () => { console.log('updated') }) 但是hooks函数的...useState第二个参数回支持类似class组件的setState的第一个参数的用法,并不支持第二个参数回,但是很多业务场景我们又希望hooks组件能支持更新的回这一方法,那该怎么办呢?...一模一样的参数,并且将回赋值给useRef的current属性,这样更新完成时,我们手动调用current即可实现更新的回这一功能,是不是很巧妙呢?...设置document的title属性就好了,我们不需要return任何值。...实现自定义的useScroll 自定义的useScroll也是高频出现的问题之一,我们往往会监听一个元素滚动位置的变化来决定展现那些内容,这个应用场景H5游戏开发应用十分广泛,接下来我们来看看实现代码

2.5K20

「不容错过」手摸手带你实现 React Hooks

复杂组件变得难以理解 组件常常在 componentDidMount 和 componentDidUpdate 获取数据。...但是,同一个 componentDidMount 可能也包含很多其它的逻辑,如设置事件监听,而之后需 componentWillUnmount 清除。...只 React 函数调用 Hook React 的函数组件调用 Hook 自定义 Hook 调用其他 Hook 利用 eslint 做 hooks 规则检查 使用 eslint-plugin-react-hooks...或 componentDidUpdate 不同,使用 useEffect 调度的 effect 不会阻塞浏览器更新视图,这让你的应用看起来响应更快。...hookStates[hookIndex++] = [newMemo, dependencies]; return newMemo; } } useCallback 允许你重新渲染之间保持对相同的回用以使得

1.2K10

社招前端一面react面试题汇总

当state改变时,组件通过重新渲染来响应:// 正确做法This.setState({message: ‘Hello World’});react 的渲染过程,兄弟节点之间是怎么处理的?...(注:这里之所以多次 +1 最终只有一次生效,是因为同一个方法多次 setState 的合并动作不是单纯地将更新累加。比如这里对于相同属性的设置,React 只会为其保留最后一次的更新)。...就去渲染对应的组件,若没有定义组件 则报错当根据数据遍历生成的标签,一定要给标签设置单独的key 否则会报错hooks 为什么不能放在条件判断里以 setState 为例, react 内部,每个组件...当然可以通过 setState 的第二个参数的 callback 拿到更新的结果setState 的批量更新优化也是建立异步(合成事件、钩子函数)之上的,原生事件和 setTimeout 不会批量更新...redux-observable优点:功能最强:由于背靠rxjs这个强⼤的响应编程的库,借助rxjs的操作符,你可以⼏乎做任何你能想到的异步处理;背靠rxjs:由于有rxjs的加持,如果你已经学习了rxjs

3K20

阿里前端二面必会react面试题总结1

useEffect(callback, source)接受两个参数callback: 钩子回函数;source: 设置触发条件,仅当 source 发生改变时才会触发;useEffect钩子没有传入...source参数时,默认每次 render 时都会优先调用上次保存的回返回的函数,再重新调用回useEffect(() => { // 组件挂载执行事件绑定 console.log...React的props为什么是只读的?this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。提到函数式编程就要提一个概念:纯函数。...componentDidMount方法的代码,是组件已经完全挂载到网页上才会调用被执行,所以可以保证数据的加载。此外,在这方法调用setState方法,会触发重新渲染。...componentWillMountfetch data,数据一定在render才能到达,如果忘记了设置初始状态,用户体验不好。

2.7K30

React-hooks+TypeScript最佳实战

(比如设置订阅或请求数据)副作用的关注点分离副作用指那些没有发生在数据向视图转换过程的逻辑,如 Ajax 请求、访问原生 DOM 元素、本地持久化缓存、绑定/解绑事件、添加订阅、设置定时器、记录日志等...该回函数将接收先前的 state,并返回一个更新的值。...调度的 effect 不会阻塞浏览器更新屏幕,这让你的应用看起来响应更快。...在这个 effect ,我们设置了 document 的 title 属性,不过我们也可以执行数据获取或调用其他命令式的 API。为什么组件内部调用 useEffect?...原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 的新类型 Symbol。我们主要介绍前五种原始数据类型 TypeScript 应用

6K50

React-Hook最佳实践

state,但是这里有几个问题这个回函数,其实也只要获取最新的 state,所以调用 setState 的时候,拿到最新的值的同时,记得把 setState 的值,设置成和当前同一个,如果没有返回...然后也可以获取最新的 state,一举两得,但是还是有问题的setState函数如果不写 return stateCallback; 这段代码,会导致 state 莫名其妙被设置成 undefined...,但是又不想全部属性和方法都给父组件调用的时候使用useLayoutEffect 使用的不多,作用和 useEffect 一样,但是这个 hook 是组件变化, DOM 节点生成,渲染之前调用,区别于...useEffect 是渲染之后调用,不太推荐使用,会阻塞渲染useDebugValue 可用于 React 开发者工具显示自定义 hook 的标签。...,进入页面需要调用后端接口的问题,如果每个组件都写一次,很繁琐,假设处理数据接口长这样子interface Response { /** 是否有错误 */ hasError: boolean

3.9K30

腾讯前端经典react面试题汇总

useEffect(callback, source)接受两个参数callback: 钩子回函数;source: 设置触发条件,仅当 source 发生改变时才会触发;useEffect钩子没有传入...source参数时,默认每次 render 时都会优先调用上次保存的回返回的函数,再重新调用回useEffect(() => { // 组件挂载执行事件绑定 console.log...它是一个回函数,当 setState方法执行结束并重新渲染该组件时调用它。在工作,更好的方式是使用 React组件生命周期之——“存在期”的生命周期方法,而不是依赖这个回函数。...setState 的第二个参数是一个可选的回函数。这个回函数将在组件重新渲染执行。等价于 componentDidUpdate 生命周期内执行。...在这个回函数你可以拿到更新 state 的值:this.setState({ key1: newState1, key2: newState2, ...}, callback)

2.1K20

React 获取数据的 3 种方法:哪种最好?

执行 I/O 操作(例如数据提取)时,要先发送网络请求,然后等待响应,接着将响应数据保存到组件的状态,最后进行渲染。 React 中生命周期方法、Hooks和 Suspense是获取数据的方法。...有一个获取数据的异步方法fetch()。获取请求完成,使用 setState 方法来更新employees。...简单回忆一下useEffect(callback[, deps]) Hook 。这个hook挂载执行callback ,并且当依赖项deps发生变化时重新渲染。...函数组件useEffect(fetch, [query]),初始渲染之后执行fetch回。此外,当依赖项 query 更新时也会重新执行 fetch 方法 。...松耦合与获取实现 使用Suspense的组件看不出如何获取数据:使用 REST 或 GraphQL。Suspense设置一个边界,保护获取细节泄露到组件

3.5K20

React 原理问题

useEffect会捕获props和state。所以即便在回函数里,你拿到的还是初始的props和state。如果想得到“最新”的值,可以使用ref。 3、hooks 为什么不能放在条件判断里?...以setState为例, react 内部,每个组件(Fiber)的 hooks 都是以链表的形式存在memoizeState属性。...组件生命周期 constructor() 禁止构造函数调用setState,可以直接给state设置初始值 componentWillMount() componentDidMount() componentDidMount...设计思想不同 Redux函数式编程思想 Mobx对象编程响应编程 2....数据可变性的不同 Redux强调的是对象的不可变性,不能直接操作状态对象。而是原来状态对象的基础上返回一个新的状态对象,最后返回应用的上一个状态 Mobx可以直接使用新值更新状态对象 4.

2.5K00

React-hooks面试考察知识点汇总

复杂组件变得难以理解 组件常常在 componentDidMount 和 componentDidUpdate获取数据。...但是,同一个 componentDidMount 可能也包含很多其它的逻辑,如设置事件监听,而之后需 componentWillUnmount 清除。...Hook 使你无需修改组件结构的情况下复用状态逻辑。Hook 将组件相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。...Hook 提供了问题的解决方案,无需学习复杂的函数式或响应编程技术。Hook APIuseStateuseState 是react自带的一个hook函数,它的作用就是用来声明状态变量。...这使得它适用于许多常见的副作用场景,比如设置订阅和事件处理等情况,因此不应在函数执行阻塞浏览器更新屏幕的操作。effect 的条件执行默认情况下,effect 会在每轮组件渲染完成执行。

1.2K40

React-hooks面试考察知识点汇总

复杂组件变得难以理解 组件常常在 componentDidMount 和 componentDidUpdate获取数据。...但是,同一个 componentDidMount 可能也包含很多其它的逻辑,如设置事件监听,而之后需 componentWillUnmount 清除。...Hook 使你无需修改组件结构的情况下复用状态逻辑。Hook 将组件相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。...Hook 提供了问题的解决方案,无需学习复杂的函数式或响应编程技术。Hook APIuseStateuseState 是react自带的一个hook函数,它的作用就是用来声明状态变量。...这使得它适用于许多常见的副作用场景,比如设置订阅和事件处理等情况,因此不应在函数执行阻塞浏览器更新屏幕的操作。effect 的条件执行默认情况下,effect 会在每轮组件渲染完成执行。

2K20

前端面试指南之React篇(二)

当要获取表单数据时,要首先获取表单元素,然后通过表单元素获取元素的值。注意:为了方便在组件获取表单元素,通常为元素设置ref属性,组件内部通过refs属性获取对应的DOM元素。...如果我们将AJAX 请求放置在生命周期的其他函数,我们并不能保证请求仅在组件挂载完毕才会要求响应。...如果我们的数据请求组件挂载之前就完成,并且调用了setState函数将数据添加到组件状态,对于未挂载的组件则会报错。...除了高帧率动画, Vue 其他的场景几乎都可以使用防抖和节流去提高响应性能。...因此handleSubscriptionChange还是会在数据返回成功被执行,这时候setState由于组件已经被移除,就会导致内存泄漏。

2.8K120

一份react面试题总结

useEffect(callback, source)接受两个参数 callback: 钩子回函数; source: 设置触发条件,仅当 source 发生改变时才会触发; useEffect钩子没有传入...source参数时,默认每次 render 时都会优先调用上次保存的回返回的函数,再重新调用回useEffect(() => { // 组件挂载执行事件绑定 console.log...无论你何处渲染一个 ,都会在应用程序的 HTML 渲染锚()。...,data.js,将数据保存data.js,跳转页面获取; sessionStorge: 进入选择地址页面之前,componentWillUnMount的时候,将数据存储到sessionStorage...当应用程序开发模式下运行时,React 将自动检查咱们组件上设置的所有 props,以确保它们具有正确的数据类型。

7.4K20

关于前端面试你需要知道的知识点

如何在 ReactJS 的 Props上应用验证? 当应用程序开发模式下运行时,React 将自动检查咱们组件上设置的所有 props,以确保它们具有正确的数据类型。...该函数会在setState设置成功,且组件重新渲染调用。 合并nextState和当前state,并重新渲染组件。setState是React事件处理函数中和请求回函数触发UI更新的主要方法。...callback,可选参数,回函数。该函数会在replaceState设置成功,且组件重新渲染调用。...1. setState是同步执行的 setState是同步执行的,但是state并不一定会同步更新 2. setStateReact生命周期和合成事件批量覆盖执行 React的生命周期钩子和合成事件...为了合并setState,我们需要一个队列来保存每次setState数据,然后一段时间执行合并操作和更新state,并清空这个队列,然后渲染组件。

5.4K30
领券