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

听说现在都考这些React面试题

因此 Portals 适合脱离文档流(out of flow) 的组件,特别是 position: absolute 与 position: fixed 的组件。...useEffect,把第二个参数即依赖的状态,设置为 [] useEffect(callback, []) 15 如果使用 SSR,可以 created/componentWillMount 中访问...localStorage 吗 不可以,created/componentWillMount 时,还未挂载,代码仍然服务器中执行,此时没有浏览器环境,因此此时访问 localStorage 将会报错...因此无法返回 Promise,更无法使用 async/await useEffect(() => { const subscription = props.source.subscribe();...React 项目中 immutable 是优化性能的 28 redux 中如何发送请求 29 redux 中如何写一个记录状态变更的日志插件 30 setState 时发生了什么 31 如何设计一个

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

react高频面试题总结(附答案)

首先想到的就是localStoragelocalStorage是没有时间限制的数据存储,可以通过来实现数据的持久化存储。...但是已经使用redux来管理和存储全局数据的基础上,再去使用localStorage来读写数据,这样不仅是工作量巨大,还容易出错。那么有没有结合redux来达到持久数据存储功能的框架呢?...painting,算是某种异步的方式吧,但是class的componentDidMount 和componentDidUpdate是同步的,render结束后就运行,useEffect大部分场景下都比...里面的callback函数会在DOM更新完成后立即执行,但是会在浏览器进行任何绘制之前运行完成,阻塞了浏览器的绘制.怎么阻止组件的渲染在组件的 render 方法中返回 null 并不会影响触发组件的生命周期方法对...尤其是高并发访问的情况,会大量占用服务端CPU资源;2)开发条件受限服务端渲染中,只会执行到componentDidMount之前的生命周期钩子,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制

2.2K40

你应该会喜欢的5个自定义 Hook

React hooks React hooks 已经16.8版本引入到库中。允许我们函数组件中使用状态和其他React特性,这样我们甚至不需要再编写类组件。 实际上,Hooks 远不止于此。...因此,我们看看如何构建一个简单但有用的自定义 Hook,以便在需要在应用程序内部获取数据时调用该 Hook。 okk,这个 Hook 我们叫 useFetch。...因此,我们应该使用useEffect Hook 来执行查询。 本例中,我们使用 Fetch API来发出请求。我们会传递URL和 options。...return { error, data }; 最后,向用户表明异步请求的状态通常是一个好做法,比如在呈现结果之前显示 loading。 因此,我们添加第三个 state 变量来跟踪请求的状态。...因此,此数组将包含有状态值和在将其持久存储localStorage 中时对其进行更新的函数。 首先,我们创建将与 localStorage 同步的React状态变量。

8.1K20

【React】945- 你真的用对 useEffect 了吗?

但是,运行这个程序的时候,会出现无限循环的情况。useEffect组件mount时执行,但也会在组件更新时执行。...因为我们每次请求数据之后都会设置本地的状态,所以组件会更新,因此useEffect会再次执行,因此出现了无限循环的情况。我们只想在组件mount时请求数据。...1.png useEffect 全部渲染完毕后才会执行 useLayoutEffect 会在 浏览器 layout 之后,painting 之前执行 其函数签名与 useEffect 相同,但它会在所有的...6.useEffect源码解析 首先我们要牢记 effect hook 的一些属性: 它们渲染时被创建,但是浏览器绘制后运行。 如果给出了销毁指令,它们将在下一次绘制前被销毁。...每个 effect 节点都是一个不同的类型,并能在适当的状态下被定位到: 修改之前调用 getSnapshotBeforeUpdate() 实例。 运行所有插入、更新、删除和 ref 的卸载。

9.6K20

对比 React Hooks 和 Vue Composition API

该 RFC 始自于社区某些部分受到 大量非议 的之前一个叫做 Function-based Component API 的版本 -- 人们担心 Vue 开始变得更复杂而不像大家最初喜欢时那样是个简单的库了...如何跟踪依赖 React 中的 useEffect hook 允许我们每次渲染之后运行某些副作用(如请求数据或使用 storage 等 Web APIs),并视需要在下次执行回调之前或当组件卸载时运行一些清理工作...默认情况下,所有用 useEffect 注册的函数都会在每次渲染之后运行,但我们可以定义真实依赖的状态和属性,以使 React 相关依赖没有改变的情况下(如由 state 中的其他部分引起的渲染)跳过某些...: useEffect(() => { console.log("这段只初次渲染后运行"); return () => { console.log("这里会在组件将要卸载时运行"); }; }...Vue Composition API 中,如我们几乎所有文中之前的例子中所见,ref 可被用于定义反应式状态。

6.6K30

(译) 如何使用 React hooks 获取 api 接口数据

但是如上代码运行的时候,你会发现一个特别烦人的循环问题。effect hook 的触发不仅仅是组件第一次加载的时候,还有每一次更新的时候也会触发。...我们只想在组件第一次加载的时候获取数据 ,这也就是为什么你可以提供一个空数组作为 useEffect 的第二个参数以避免组件更新的时候也触发。当然,这样的话,也就是组件加载的时候触发。...因为你提供的是一个空数组作为useEffect的第二个参数是一个空数组,所以effect hook 的触发不依赖任何变量,因此组件第一次加载的时候触发。...我之前已经在这里写过关于这个问题的文章,描述了如何防止各种场景中为未加载的组件中设置状态。...该功能在组件卸载时运行。清理功能是 hook 返回的一个功能。我们的例子中,我们使用一个名为 didCancel 的 boolean 来标识组件的状态。

28.4K20

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

在编译完成之后,JSX 表达式就变成了常规的 JavaScript 对象,这意味着你可以 if 语句和 for 循环内部使用 JSX,将它赋值给变量,接受作为参数,并从函数中返回。...删除 remove(key){ localStorage.removeItem(key); }};export default Storage;React项目中,通过redux...首先想到的就是localStoragelocalStorage是没有时间限制的数据存储,可以通过来实现数据的持久化存储。...但是已经使用redux来管理和存储全局数据的基础上,再去使用localStorage来读写数据,这样不仅是工作量巨大,还容易出错。那么有没有结合redux来达到持久数据存储功能的框架呢?...当然,它就是redux-persist。redux-persist会将redux的store中的数据缓存到浏览器的localStorage中。

2.4K50

如何测试 React Hooks ?

Ok,我们来试验一下这个想法: const sum = (a, b) => a + b 对于该函数的一种重构: const sum = (a, b) => b + a 依然会一摸一样的运行,但其自身的实现却有了一点不同...= () => setCount(c => c + 1) useEffect( () => { window.localStorage.setItem('count', count)...但其实的工作方式异于从前了;真正的门道在于 useEffect 回调被预定在稍晚的时间执行。...所以之前,是我们渲染之后同步的设置 localStorage 的值;而现在这个动作被安排到渲染之后的某个时候。为何如此呢?...结论 重构代码前可以做的最好的一件事就是有个良好的测试套件/类型定义,这样当你无意中破坏了某些事情时可以快速定位问题。同样要谨记 如果你重构时把之前的测试套件丢在一边,那些用例将变得毫无助益。

1.5K10

Redux你是个好人,只是我们不合适

Dan 合适的出现时机加上大名气,催生Redux相关生态社区快速发展,成为很多前端团队标配。 当谈论状态管理时,通常在谈什么 当谈论「状态管理」时,一般会从「广度」、「深度」两个方面来。 ?...中间件之上,又涌现了更全面的解决方案,比如基于Redux-Saga的DVA。 除了这两个纬度,还有其他视角么? 其实,我们可以从问题的本质出发。 前端,需要哪些状态?...状态管理」方案,常见方式是请求数据后保存在组件state中,如: function App() { const [data, updateData] = useState(null); useEffect...处理缓存的状态管理 对于第一种情况,不管是服务端请求、localStorage、indexedDB,本质上说,都可以归类为缓存。 所以,相比Redux等常规状态管理方案,缓存处理方案可能更合适。...缓存失效后的更新 复用缓存数据 React技术栈,SWR、react-query都是优秀的解决方案。这里以SWR举例: ?

1K20

Redux你是个好人,只是我们不合适

另一位联合作者「Andrew」也来自React核心团队 Dan 合适的出现时机加上大名气,催生Redux相关生态社区快速发展,成为很多前端团队标配。...中间件之上,又涌现了更全面的解决方案,比如基于Redux-Saga的DVA。 除了这两个纬度,还有其他视角么? 其实,我们可以从问题的本质出发。 前端,需要哪些状态?...处理缓存的状态管理 对于第一种情况,不管是服务端请求、localStorage、indexedDB,本质上说,都可以归类为缓存。 所以,相比Redux等常规状态管理方案,缓存处理方案可能更合适。...缓存失效后的更新 复用缓存数据 React技术栈,SWR、react-query都是优秀的解决方案。...这里以SWR举例: 对于刚才的例子: function App() { const [data, updateData] = useState(null); useEffect(() =

50910

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

(构造函数中)调用 super(props) 的目的是什么 super() 被调用之前,子类是不能使用 this 的, ES2015 中,子类必须在 constructor 中调用 super()... Virtual DOM 没有出现之前,最简单的方法就是直接调用 innerHTML。...但是,我们推荐你一开始先用 useEffect,只有当出问题的时候再尝试使用 useLayoutEffect。useEffect 可以表达所有这些的组合。...销毀期,组件即将被销毁,请求数据变得无意义。因此在这些阶段发岀Ajax请求显然不是最好的选择。...组件尚未挂载之前,Ajax请求将无法执行完毕,如果此时发出请求,将意味着组件挂载之前更新状态(如执行 setState),这通常是不起作用的。

3K20

react hooks api

v16.8 版本之前,组件的标准写法是类(class)。...•难于理解的 Class 组件:JS 中的this关键字让不少人吃过苦头,的取值与其它面向对象语言都不一样,是在运行时决定的。为了解决这一痛点,才会有剪头函数的this绑定特性。...但是,没法提供中间件(middleware)和时间旅行(time travel),如果你需要这两个功能,还是要用 Redux。...当useEffect的返回值是一个函数的时候,React 会在下一次执行这个副作用之前执行一遍清理工作,整个组件的生命周期流程可以这么理解: 组件挂载 --> 执行副作用 --> 组件更新 --> 执行清理函数...使用也像普通的函数调用一样,Hook 里面其它的 Hook(如useEffect)会自动合适的时候调用: 3.4的例子中,完全可以进一步封装。

2.7K10

react-hooks如何使用?

就要给effect加入限定执行的条件,也就是useEffect的第二个参数,这里说是限定条件,也可以说是上一次useeffect更新收集的某些记录数据变化的记忆,新的一轮更新,useeffect会拿出之前的记忆值和当前值做对比...渲染更新之前useEffect useEffect 执行顺序 组件更新挂载完成 -> 浏览器dom 绘制完成 -> 执行useEffect回调 。...useReducer 是react-hooks提供的能够无状态组件中运行的类似redux的功能api,至于到底能不能代替redux react-redux ,我个人的看法是不能的 ,redux 能够复杂的逻辑中展现优势...我们知道无状态组件的更新是从头到尾的更新,如果你想要从新渲染一部分视图,而不是整个组件,那么用useMemo是最佳方案,避免了不需要的更新,和不必要的上下文的执行,介绍useMemo之前,我们先来说一说...setCacheSelectList={setCacheSelectList} /> ), [listshow, cacheSelectList]) 3 useMemo让函数某个依赖项改变的时候才运行

3.5K80

一份react面试题总结

之前使用场景上,如果存在需要使用生命周期的组件,那么主推类组件;设计模式上,如果需要使用继承,那么主推类组件。...特性,例如 state、 各种组件生命周期钩子等,但是函数定义中,我们却无能为力,因此 React 16.8 版本推出了一个新功能 (React Hooks),通过,可以更好的函数定义组件中使用...这个问题就设计到了数据持久化, 主要的实现方式有以下几种: Redux: 将页面的数据存储redux中,重新加载页面时,获取Redux中的数据; data.js: 使用webpack构建的项目,可以建一个文件...,data.js,将数据保存data.js中,跳转页面后获取; sessionStorge: 进入选择地址页面之前,componentWillUnMount的时候,将数据存储到sessionStorage...当应用程序开发模式下运行时,React 将自动检查咱们组件上设置的所有 props,以确保它们具有正确的数据类型。

7.4K20

使用hooks重新定义antd pro想象力(一)

的核心数据处理方案dva聚合了react-redux, redux-saga,极大的降低了redux使用的复杂度。因此使用antd pro无疑是一个非常好的方案。 但是!...长达一年多的时间里,由于官方并没有针对React hooks提出任何解决方案和推荐方案,因此目前来说,react hooks的开发福利,极少有团队享受到了。...antd pro并非一个入门项目,因此阅读本系列文章,需要有以下基本功底 1.对ant design和antd pro的组件有一定的了解2.对dva有一定的了解,知道dva的运行机制3.掌握react的基础知识...官方提供的demo,许多实现上,并非最佳方式,因此如果要运用于实践,不可盲从,需要根据实际情况进行调整。...api,不过正式版发布之前,需要指定版本下载依赖。

4.1K20
领券