首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

返回的是数组,那么使用者可以对数组中的元素命名,代码看起来也比较干净如果 useState 返回的是对象,解构对象的时候必须要和 useState 内部实现返回的对象同名,想要使用多次的话,必须得设置别名才能使用返回下面来看看如果...React底层,主要对合成事件做了两件事:事件委派: React会把所有的事件绑定到结构的最外层,使用统一的事件监听器,这个事件监听器维持了一个映射来保存所有组件内部事件监听和处理函数。...可以这样:把Radio看做子组件,RadioGroup看做父组件,name的属性RadioGroup这个父组件中设置。...Refs 提供了一种方式,用于访问 render 方法中创建的 React 元素 DOM 节点。...怎么阻止组件的渲染在组件的 render 方法中返回 null 并不会影响触发组件的生命周期方法useEffect和useLayoutEffect的区别useEffect 基本90%的情况下,都应该用这个

3.7K30

React报错之Too many re-renders

该函数是页面加载时立即被调用,而不是事件触发后调用。 传递函数 为了解决该错误,为onClick事件处理器传递函数,而不是传递调用函数的结果。...如果该方法页面加载时被调用,就会触发一个setState动作,组件就会无限重新渲染。 如果我们试图立即设置一个组件的状态,而不使用一个条件事件处理器,也会发生这个错误。...你也可以直接向useState方法传递一个初始。 另外,你也可以像前面的例子那样使用一个条件事件处理器。...确保你没有使用一个每次渲染时都不同的对象数组作为useEffect钩子的依赖。...处理数组时,我们用于对象的方法同样有效。例如,我们可以使用useMemo钩子来获得一个渲染之间不会改变的记忆

3.2K40

React-Hooks怎样封装防抖和节流-面试真题

Debouncedebounce 原意消除抖动,对于事件触发频繁的场景,只有最后由程序控制的事件是有效的。...防抖函数,我们需要做的是一件事触发的时候设置一个定时器使事件延迟发生,定时器期间事件再次触发的话则清除重置定时器,直到定时器到时仍不被清除,事件才真正发生。...,可以将目标变量通过useDebounceHook转化一次,只有满足delay的延迟之后,才会触发delay期间的触发都会重置计时。...节流函数相对于防抖函数用在事件触发更为频繁的场景,滑动事件,滚动事件,动画上。......arguments和 call 方法调用展开参数及apply 传入argument的效果是一样的)扩展:ES6之前,没有箭头函数,需要手动保留闭包函数中的this和参数再传入定时器中的函数调用:

1K30

React-Hooks怎样封装防抖和节流-面试真题

Debouncedebounce 原意消除抖动,对于事件触发频繁的场景,只有最后由程序控制的事件是有效的。...防抖函数,我们需要做的是一件事触发的时候设置一个定时器使事件延迟发生,定时器期间事件再次触发的话则清除重置定时器,直到定时器到时仍不被清除,事件才真正发生。...,可以将目标变量通过useDebounceHook转化一次,只有满足delay的延迟之后,才会触发delay期间的触发都会重置计时。...节流函数相对于防抖函数用在事件触发更为频繁的场景,滑动事件,滚动事件,动画上。......arguments和 call 方法调用展开参数及apply 传入argument的效果是一样的)扩展:ES6之前,没有箭头函数,需要手动保留闭包函数中的this和参数再传入定时器中的函数调用:

43530

如何在 React 中实现鼠标悬停显示文本?

React 应用中,当用户将鼠标悬停在某个元素时,我们经常需要显示一些相关的文本,以提供额外的信息交互提示。...使用 useState 钩子来管理鼠标悬停的状态。通过定义 handleMouseEnter 和 handleMouseLeave 两个事件处理函数,我们可以鼠标进入和离开元素时更新悬停状态。...组件的返回中,我们将 元素作为悬停触发区域,并根据 isHovered 状态来决定是否显示文本。...通过传递 content 属性来设置悬停时显示的文本内容。组件的返回中,我们使用 render props 的方式来渲染触发区域的元素。...结论本文详细介绍了 React 中实现鼠标悬停显示文本的两种方法使用状态管理和使用第三方库。通过手动管理状态使用第三方库,我们可以根据用户的悬停行为来显示和隐藏文本,提供更好的用户体验和交互。

2.7K10

如何在 React 中点击显示隐藏另一个组件?

一个 React 应用程序中,有时需要一个按钮链接来触发显示隐藏一个相关的组件。这种需求可以通过使用 React 状态管理和事件处理机制来实现。...本文中,我们将介绍如何使用 React 来实现点击显示隐藏另一个组件。我们将首先讨论如何使用 React 状态管理来控制组件的可见性,然后介绍如何使用事件处理机制来响应用户交互。...本文中,我们将关注本地状态。 React 中,使用 useState 钩子可以创建本地状态。useState 钩子返回一个数组,其中第一个元素是当前状态的,第二个元素是更新该状态的函数。...} );}在这个示例中,我们使用 useState 钩子创建了一个名为 isVisible 的本地状态,并将其初始设置为 false。...显示/隐藏模态框我们可以使用事件处理函数来触发模态对话框的显示隐藏。当用户单击打开模态框的按钮时,模态框应该出现;当用户单击关闭按钮模态框之外时,模态框应该消失。

4.3K10

11 个需要避免的 React 错误用法

所以我们需要给数组中的每一个元素设置一个唯一的 key。 文档介绍 React - Basic List Component 2....将 state 直接绑定到 input 标签的 value 属性 问题描述 当我们直接将 state的作为参数绑定到 input标签的 value属性,我们会发现,无论我们输入框输入什么内容,输入框内容都不会发生变化...使用 useState + useEffect 时出现无限循环 问题描述 当我们 useEffect()中直接调用 useState()返回的 set*()方法,并且没有设置 useEffect()第二个参数时...忘记在 useEffect 中清理副作用 问题描述 我们类组件中,经常使用 componentDidMount() 生命周期方法去清理一些副作用,比如定时器、事件监听等。...错误的使用布尔运算符 问题描述 JSX/TSX 语法中,我们经常通过布尔来控制渲染的元素,很多情况我们会使用 &&运算符来处理这种逻辑: const count = 0; const Comp =

2K30

react hooks 全攻略

通过调用 useState,我们可以获取当前的状态 count 和更新状态的函数 setCount。在按钮的点击事件中,我们调用 setCount 来更新计数器的,并触发重新渲染。...手动更改 DOM: 通过访问 DOM 节点使用第三方 DOM 库来改变 DOM 结构。 日志记录:控制台打印日志信息。 计时器:通过设置 Interval Timeout 来执行定时操作。...DOM 元素其他引用的方法。...与状态 Hook(如 useState)不同,使用 useRef 存储的的更改不会触发组件的重新渲染。...解决这个问题的方法是仔细选择依赖项,确保只需要的时候才触发 useEffect 的回调函数。如果确实需要在每次重新渲染时执行副作用,但又想避免循环,可以考虑使用 useRef 来记录上一次的

35340

记一次React的渲染死循环

3)为了防止死循环,子组件 ViewItem 内部判断,当 value 的和 valueObj 的相等的时候将不再触发 onChange。...先执行 useEffect1,会触发 setValueObj,此操作会产生一个 state 更新事件,产生一次计划 UI 更新(注意:此时并不会立即修改valueObj的)。...onChange 同步执行,即会立即调用父组件 App 的 setValue 方法方法同样是一个 state,会产生一个 state 更新事件,产生一次计划 UI 更新。...此时,value 的最新为 onChange 传出来的 { a: 99999 } valueObj 的最新为 setValueObj({ a: 1 }) 执行的时候设置的 { a: 1 }。...五、总结 本次事件,出现死循环的直接原因就是 useEffect 和 useState 二者使用的时候没有处理好他们之间的互相依赖关系。

1.3K20

【React】1413- 11 个需要避免的 React 错误用法

所以我们需要给数组中的每一个元素设置一个唯一的 key。 文档介绍 React - Basic List Component 2....将 state 直接绑定到 input 标签的 value 属性 问题描述 当我们直接将 state的作为参数绑定到 input标签的 value属性,我们会发现,无论我们输入框输入什么内容,输入框内容都不会发生变化...使用 useState + useEffect 时出现无限循环 问题描述 当我们 useEffect()中直接调用 useState()返回的 set*()方法,并且没有设置 useEffect()第二个参数时...忘记在 useEffect 中清理副作用 问题描述 我们类组件中,经常使用 componentDidMount() 生命周期方法去清理一些副作用,比如定时器、事件监听等。...错误的使用布尔运算符 问题描述 JSX/TSX 语法中,我们经常通过布尔来控制渲染的元素,很多情况我们会使用 &&运算符来处理这种逻辑: const count = 0; const Comp =

1.6K20

React Hooks源码浅析

换句话说,每一个state的声明和赋值都需要通过调用useState函数来完成。而设置代码中的count变量的,都必须使用useState返回的setCount。...基本这就是function类型的Fiber的render阶段会做的事情。那么DEMO中我们有用到useState,那么具体从源码是如何调用的呢?...render阶段,将函数Fiber内容实例化的时候会去处理全局中的Hooks对象的指向 最终useState是调用内部函数mountState去设置state的。...useState的时候返回的setCount函数中,会提前绑定好了当前的Fiber节点,以及一个queue的参数。 最终会将新传入的state的保存在queue中的last对象。...react会对这次传入的数组中的每一项和一次数组中的每一项进行对比,当发现不一样时会做对应记录,渲染后就会触发对应符合触发的useEffect函数。 useEffect的触发是采用异步方式执行的。

1.8K30

美丽的公主和它的27个React 自定义 Hook

例如,用于获取数据并将数据管理本地变量中的逻辑是有状态的。我们可能还希望多个组件中重复使用获取数据的逻辑。 以前,状态逻辑只能在类组件中使用生命周期方法来实现。...当复制成功时,提供的文本将被设置为当前,成功状态将设置为true。 相反,如果复制失败,成功状态将保持为false。 使用场景 useCopyToClipboard钩子可以各种情境中使用。...通过简单的单击,按钮的状态 true 和 false 之间切换。此外,该钩子提供了按钮,允许直接将设置为 true false,以满足特定用例。...这在需要实时更新用户位置的情况下很有用,比如在跟踪应用程序交互地图中。 使用场景 数据对象包含纬度和经度,允许我们轻松地UI显示用户的位置。...使用场景 useHover可以各种情况下使用。无论我们需要在悬停时突出显示元素、触发其他操作动态更改样式,这个自定义钩子都能胜任。

54420

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

受控组件更新state的流程:可以通过初始state中设置表单的默认每当表单的发生变化时,调用onChange事件处理器事件处理器通过事件对象e拿到改变后的状态,并更新组件的state一旦通过setState...方法更新state,就会触发视图的重新渲染,完成表单组件的更新受控组件缺陷: 表单元素的都是由React组件进行管理,当有多个输入框,或者多个这种组件时,如果想同时获取到全部的就必须每个都要编写事件处理函数...非受控组件中,可以使用一个ref来从DOM获得表单。而不是为每个状态更新编写一个事件处理程序。...中使用useState,React 会报错提示;类组件不会被替换废弃,不需要强制改造类组件,两种方式能并存;重要钩子状态钩子 (useState): 用于定义组件的 State,其到类定义中this.state...componentDidMount方法中的代码,是组件已经完全挂载到网页才会调用被执行,所以可以保证数据的加载。此外,在这方法中调用setState方法,会触发重新渲染。

3K30

精读《React useEvent RFC》

又要在函数执行时访问到最新,那么每次都要拿最新函数来执行,所以 Hook 里使用 Ref 存储每次接收到的最新函数引用,执行函数时,实际执行的是最新的函数引用。...注意两段注释,第一个是 useLayoutEffect 部分实际要比 layoutEffect 执行时机更提前,这是为了保证函数一个事件循环中被直接消费时,可能访问到旧的 Ref ;第二个是渲染时被调用时要抛出异常...时,可以下意识提醒自己写一个事件回调,还算比较直观。...,实现,count 仅是调用时的快照,所以函数内异步等待时,即便外部又把 count 改了,当前这次函数调用还是拿不到最新的 count,而 ref 方法是可以的。...虽然提案里给了一个近似解决方案,但实际存在两个问题: 赋值 ref 时,useLayoutEffect 时机依然不够提前,如果变化后理解访问函数,拿到的会是旧

44610

Effect:由渲染本身引起的副作用

实际开发过程中,还会遇到当进入页面时触发一些动作(如播放视频、日志发送、连接到聊天服务器等)。其①不能在渲染过程中发生,②也没有一个特定的事件(比如点击)触发。...当组件接收到新的 props state 时,通常是作为对交互的响应,它会进行组件的 更新。 当组件从屏幕移除时,它会进行组件的 卸载。...不滥用Effect ⛔ 1️⃣ 根据 props state 来更新 state => 使用字面量 如果一个可以基于现有的 props state 计算得出,不要把它作为一个 state,而是渲染期间直接计算这个...☀️ 总结 如果可以渲染期间计算某些内容,则不需要使用 Effect; 想要重置整个组件树的 state,请传入不同的 key; 组件 显示 时就需要执行的代码应该放在 Effect 中,否则应该放在事件处理函数中...如果使用 useEffect tooltip 会“闪烁”(更正位置之前短暂地看到初始位置)。 useInsertionEffect3 布局副作用触发之前将元素插入到 DOM 中。

4300

那些关于DOM的常见Hook封装(二)

来看该 hook 的封装: 首先是 onChange 事件中,判断是否是全屏,从而触发进入全屏的函数或者退出全屏的函数。当退出全屏的时候,卸载 change 事件。...并通过 screenfull.request 进行设置,并监听 change 事件。...主要实现原理是监听 mouseenter 触发 onEnter 事件,切换状态为 true,监听 mouseleave 触发 onLeave 事件,切换状态为 false。...由此可以知道当前文档 (即为页面) 是背后, 或是不可见的隐藏的标签页,或者 (正在) 预渲染。可用的如下: 'visible' : 此时页面内容至少是部分可见....文档只能从此状态开始,永远不能从其他变为此状态。 典型用法是防止当页面正在渲染时加载资源,或者当页面背景中窗口最小化时禁止某些活动。

82320
领券