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

高频React面试题及详解

setState “异步”并不是说内部由异步代码实现,其实本身执行过程和代码都是同步,只是合成事件和钩子函数调用顺序在更新之前,导致在合成事件和钩子函数没法立马拿到更新值,形成了所谓“异步...”,当然可以通过第二个参数 setState(partialState, callback) callback拿到更新结果。...性能优化手段很多时候是通用详情见前端性能优化加载React如何进行组件/逻辑复用?...抛开已经被官方弃用Mixin,组件抽象技术目前有三种比较主流: 高阶组件: 属性代理 反向继承 渲染属性 react-hooks 组件复用详解见组件复用 mixin、hoc、render props...,更加简洁 解耦: React Hooks可以更方便地把 UI 和状态分离,做到更彻底解耦 组合: Hooks 可以引用另外 Hooks形成新Hooks,组合变化万千 函数友好: React Hooks

2.4K40

前端一面react面试题总结

两者对⽐:redux将数据保存在单⼀store,mobx将数据保存在分散多个storeredux使⽤plain object保存数据,需要⼿动处理变化操作;mobx适⽤observable保存数据...Redux 怎么实现属性传递,介绍下原理react-redux 数据传输∶ view-->action-->reducer-->store-->view。...但是对于合成事件来说,有一个事件池专门来管理它们创建和销毁,当事件需要被使用时,就会从池子复用对象,事件回调结束,就会销毁事件对象上属性,从而便于下次复用事件对象。...该函数会在装载时,接收到 props 或者调用了 setState 和 forceUpdate 时被调用。如当接收到属性想修改 state ,就可以使用。...那为什么不要在循环、条件或嵌套函数调用 Hook 呢?因为 Hooks 设计是基于数组实现。在调用时按顺序加入数组,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误 Hook。

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

Redux with Hooks

前言 React在16.8版本为我们正式带来了Hooks API。什么是Hooks?简而言之,就是对函数式组件一些辅助,让我们不必写class形式组件也能使用state和其他一些React特性。...本文并不是Hooks基础教程,所以建议读者先大致扫过官方文档3、4节,对Hooks API有一定了解。...使用React-Reduxhooks APIs(推荐) 既然前面几种方案或多或少都有些坑点,那么不妨尝试一下React Redux在v7.1.0版本为我们带来官方hooks APIs,下面就展示下基本用法...两者用法相近,但如果你想后者像前者一样返回一个对象的话要特别注意: 由于useSelector内部默认是使用===来判断前后两次selector函数计算结果是否相同(如果不相同就会触发组件re-render...此外,使用Hooks自建全局状态管理方式在小项目中固然可行,然而想用在较大型、正式业务,至少还要花费心思解决性能问题,而这个问题正是React-Redux等工具已经花费不少功夫帮我们解决了,似乎并没有什么充分理由要抛弃它们

3.3K60

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

state、 各种组件生命周期钩子等,但是在函数定义,我们却无能为力,因此 React 16.8 版本推出了一个新功能 (React Hooks),通过它,可以更好在函数定义组件中使用 React...好处:跨组件复用: 其实 render props / HOC 也是为了复用,相比于它们,Hooks 作为官方底层 API,最为轻量,而且改造成本小,不会影响原来组件层次结构和传说中嵌套地狱;类定义更为复杂不同生命周期会使逻辑变得分散且混乱...`全局性,可以完成一个轻量级 Redux;(easy-peasy)useCallback: 缓存回调函数,避免传入回调每次都是新函数实例而导致依赖组件重新渲染,具有性能优化效果;useMemo...启动虛拟机,在cmd输入 adb devices可以查看设备。redux有什么缺点一个组件所需要数据,必须由父组件传过来,而不能像flux中直接从store取。...用户访问 ViewView发出用户 ActionDispatcher 收到Action,要求 Store 进行相应更新Store 更新,发出一个"change"事件View 收到"change"事件

2.7K30

React项目中全量使用 Hooks

写过 react-redux 同学可能发这个 reducer 与 react-redux reducer 很像,我们借助 react-redux 思想可以实现一个对象部分更改 reducer...与 useEffectAPI相同区别:useEffect在浏览器渲染执行,useLayoutEffect 在浏览器渲染之前执行,由于JS是单线程,所以 useLayoutEffect 还会阻塞浏览器渲染...Class 组件实例,上面包含 Class 所有方法属性等。...,useSelector 默认使用是 ===来判断两次计算结果是否相同,如果我们返回是一个对象,那么在 useSelector 每次调用都会返回一个新对象,所以所以为了减少一些没必要re-render...下期更新在React 自定义 Hooks 应用场景 ,主要讲一些 Hooks 高阶应用

3K51

前端高频react面试题

那为什么不要在循环、条件或嵌套函数调用 Hook 呢?因为 Hooks 设计是基于数组实现。在调用时按顺序加入数组,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误 Hook。...通过this.props获取旧属性,通过nextProps获取新props,对比两次props是否相同,从而更新子组件自己state。...页面重新加载时怎样保留数据?...这个问题就设计到了数据持久化, 主要实现方式有以下几种:Redux: 将页面的数据存储在redux,在重新加载页面时,获取Redux数据;data.js: 使用webpack构建项目,可以建一个文件...// 第二个参数是 state 更新完成回调函数什么是 PropsProps 是 React 属性简写。

3.3K20

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

,而是给react,大概作用就是给每一个reactNode添加一个身份标识,方便react进行识别,在重渲染过程,如果key一样,若组件属性有所变化,则react只更新组件对应属性;没有变化则不更新...但是这种写法很少使用,并不是常用写法。React允许对 setState方法传递一个函数,它接收到先前状态和属性数据并返回一个需要修改状态对象,正如我们在上面所做那样。...什么情况下使用异步组件提高页面加载速度,使用reloadable把各个页面分别单独打包,按需加载Reactkeys作用是什么?...(Fiber) hooks 都是以链表形式存在 memoizeState 属性图片update 阶段,每次调用 setState,链表就会执行 next 向后移动一步。...当然可以通过 setState 第二个参数 callback 拿到更新结果setState 批量更新优化也是建立在异步(合成事件、钩子函数)之上,在原生事件和 setTimeout 不会批量更新

3K20

React Hooks

一、React 两套 API 以前,React API 只有一套,现在有两套:类(class)API 和基于函数钩子(hooksAPI。 任何一个组件,可以用类来写,也可以用函数来写。...纯函数内部只有通过间接手段(即通过其他函数调用),才能包含副作用。 二、React Hooks Hook(钩子)是 React 函数组件副作用解决方案,用来为函数组件引入副作用。...由于 Hooks 可以提供共享状态和 Reducer 函数,所以它在这些方面可以取代 Redux。...组件加载以后,React 就会执行这个函数。 useEffect() 作用就是指定一个副作用函数,组件每渲染一次,该函数就自动执行一次。组件首次在网页 DOM 加载,副作用函数也会执行。...因此,副作用函数这时只会在组件加载进入 DOM 执行一次,后面组件重新渲染,就不会再次执行。

2.1K10

前端一面经典react面试题(边面边更)

React-intl提供了两种使用方法,一种是引用React组件,另一种是直接调取API,官方更加推荐在React项目中使用前者,只有在无法使用React组件地方,才应该调用框架提供API。...为了演示这一点,在渲染 Icketang组件时,分别传递和不传递user属性数据来观察渲染结果。...如果一个元素节点在前后两次更新跨越了层级,那么 React 不会尝试复用它两个不同类型元素会产生出不同树。...Hooks,组件状态和 UI 变得更为清晰和隔离。...`全局性,可以完成一个轻量级 Redux;(easy-peasy)useCallback: 缓存回调函数,避免传入回调每次都是新函数实例而导致依赖组件重新渲染,具有性能优化效果;useMemo

2.2K40

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

来修改,修改state属性导致组件重新渲染。...数据放在redux里面在使用 React Router时,如何获取当前页面的路由或浏览器地址栏地址?...它真正连接 ReduxReact,它包在我们容器组件外一层,它接收上面 Provider 提供 store 里面的state 和 dispatch,传给一个构造函数,返回一个对象,以属性形式传给我们容器组件...好处:跨组件复用: 其实 render props / HOC 也是为了复用,相比于它们,Hooks 作为官方底层 API,最为轻量,而且改造成本小,不会影响原来组件层次结构和传说中嵌套地狱;类定义更为复杂不同生命周期会使逻辑变得分散且混乱...`全局性,可以完成一个轻量级 Redux;(easy-peasy)useCallback: 缓存回调函数,避免传入回调每次都是新函数实例而导致依赖组件重新渲染,具有性能优化效果;useMemo

3K30

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

React-intl是雅虎语言国际化开源项目FormatJS一部分,通过其提供组件和API可以与ReactJS绑定。...React-intl提供了两种使用方法,一种是引用React组件,另一种是直接调取API,官方更加推荐在React项目中使用前者,只有在无法使用React组件地方,才应该调用框架提供API。...React Hooks 限制主要有两条: 不要在循环、条件或嵌套函数调用 Hook; 在 React 函数组件调用 Hook。 那为什么会有这样限制呢?...那为什么不要在循环、条件或嵌套函数调用 Hook 呢?因为 Hooks 设计是基于数组实现。在调用时按顺序加入数组,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误 Hook。...,通过this.props获取旧属性,通过nextProps获取新props,对比两次props是否相同,从而更新子组件自己state。

5.4K30

阿里前端二面react面试题_2023-02-28

Redux实现原理解析 为什么要用reduxReact,数据在组件是单向流动,数据从一个方向父组件流向子组件(通过props),所以,两个非父子组件之间通信就相对麻烦,redux出现就是为了解决...HooksReact 16.8 新添加内容。它们允许在不编写类情况下使用state和其他 React 特性。使用 Hooks,可以从组件中提取有状态逻辑,这样就可以独立地测试和重用它。... refs 作用是什么 Refs 是 React 提供给我们安全访问 DOM元素或者某个组件实例句柄 可以为元素添加ref属性然后在回调函数接受该元素在 DOM 树句柄,该值会作为回调函数第一个参数返回...redux applyMiddleware Api 源码每个middleware 接受2个参数, Store getState 函数和dispatch 函数,分别获得store和action,最终返回一个函数...:组件将要接收到属性时候调用 shouldComponentUpdate:组件接受到新属性或者新状态时候(可以返回 false,接收数据不更新,阻止 render 调用,后面的函数不会被继续执行了

1.8K20

【愚公系列】2023年03月 其他-Web前端基础面试题(react专项_35道)

hooks 产生背景及 hooks优点 13、 React hooks 怎么模拟生命周期 14、React `useState()` 是什么?...、渲染到页面上 render:组件在这里生成虚拟 DOM 节点 componentDidMount:组件真正在被装载之后 运行状态: componentWillReceiveProps:组件将要接收到属性时候调用...componentDidUpdate()——在呈现发生立即调用。 componentWillUnmount()——在从DOM卸载组件调用 28、什么是React合成事件?...合成事件是充当浏览器原生事件跨浏览器包装器对象。 它们将不同浏览器行为合并到一个API。 这样做是为了确保事件在不同浏览器之间显示一致属性。...35、 什么是属性代理 属性代理组件继承自React.Component,通过传递给被包装组件props得名 diff 结果来更新 DOM。

7.6K10

React常见面试题

动态加载(异步组件)加载时会有延迟,在延迟期间可以将一些内容展示给用户,比如:loading (react16.6新增API) const resource = fetchProfileData();...HOC(高阶组件) 属性代理 反向继承 渲染属性(render props) react-hooks Mixin (已废弃,不讨论) # PureComponent组件介绍?...服务端渲染),componentWillMount生命周期会执行两次导致多余请求 在react16进行fiber重写,componentWillMount 可能在一次渲染多次调用 react17...(省把纯函数组件/其他组件改来改去)) 解耦:react hooks可以更方便地把UI和状态分离,做到更彻底解耦 组合:hooks 可以引用另外hooks 形成新hooks, 组合千变万化 函数友好...共享状态钩子,在组件之间共享状态,可以解决react 逐层通过props传递数据问题 使用流程(使用流程和react-redux差不多): 创建store:通过 createContext Api 包裹整个组件

4.1K20

百度前端一面高频react面试题指南_2023-02-23

但是对于合成事件来说,有一个事件池专门来管理它们创建和销毁,当事件需要被使用时,就会从池子复用对象,事件回调结束,就会销毁事件对象上属性,从而便于下次复用事件对象。...该函数会在装载时,接收到 props 或者调用了 setState 和 forceUpdate 时被调用。如当接收到属性想修改 state ,就可以使用。...执行不该被使用API,出现ref失控」情况 为了防止错用/滥用导致ref失控,React限制「默认情况下,不能跨组件传递ref」 为了破除这种限制,可以使用forwardRef。...如果一个元素节点在前后两次更新跨越了层级,那么 React 不会尝试复用它 两个不同类型元素会产生出不同树。..., callback)callback拿到更新结果 setState 批量更新优化也是建立在“异步”(合成事件、钩子函数)之上,在原生事件和setTimeout 不会批量更新,在“异步”如果对同一个值进行多次

2.8K10

152. 精读《recoil》

这也导致 Recoil API 偏多被诟病,这也是 Immutable 模式下存编码心智负担,虽然很好理解,但也只有 useSelector 或 Recoil 这样拆分 API 方式可以解决。...Immutable 心智负担 API 较多,在简介也提到了,这可能是 Immutable 自带硬伤,而不仅仅是 Recoil 问题。...Immutable 模式,对数据流只有读与写两种诉求,而申明式编程讲究是数据变化 UI 自动 Rerender,那么对数据读自然而然就被赋予了订阅其变化触发 Rerender 期待,但是写与读不同...Recoil 本质 从 Hooks API 到派生值,这两个核心特点恰巧是对 Context 与 useMemo 封装。...首先基于 Hooks useContext 已经足够轻量易用,可以认为 atom 与 useRecoilState、useRecoilValue、useSetRecoilValue 分别对应封装

78210

2023再谈前端状态管理

API 并不能细粒度地分析某个组件依赖了context 里哪个属性,并且它可以穿透 React.memo 和 shouldComponentUpdate 对比,把所有涉事组件强制刷新。...Class 时代 Redux Redux 灵感来源于 Flux 架构和函数式编程原理,状态更新可预测、可跟踪,提倡使用「单一存储」。这通常会「导致将所有的东西存储在一个大单体存储」。...如何处理数据间联动 react-reduxuseSelector获取状态,你可以编写一些逻辑来处理派生状态。如果派生状态需要复用,记得给抽离出来。...它包含以下核心特征: 简单、熟悉 API:不需要额外学习成本,只需要了解 React Hooks,对 Redux 用户友好。...基于观察者/可观察模式,内部对通过 state 绑定组件,添加到了订阅者队列,store属性相当于一个被观察者,当属性状态变更,通知所有订阅了该数属性组件进行更新 利用 Proxy 自动进行重新渲染优化

74210

偷师 Next.js:我学到 6 个设计技巧

并且,在很长一段时间里,React 能称为组件只有 Class 这段很长时间有多长? 从 React 诞生之初一直到React Hooks推出并进化成完全形态。...目前(2021/1/2)React Hooks 仍然不是完全形态,componentDidCatch、getSnapshotBeforeUpdate、getDerivedStateFromError等特性还不健全...也就是说,时至今日,React Components 仍等价于 Class Components,早期函数式组件只能叫 Stateless Components,获得 Hooks 加持之后函数式组件虽然摆脱了...,将结果缓存起来,下次命中静态缓存直接返回(相当于 SSG) SSG 结合 CSR:编译时生成静态部分(页面外框),CSR 填充动态部分(页面内容) SSR 联动 CSR:URL 直接访问走更快 SSR...积分、互动式新手教程 这一点算作文档设计技巧(文档,当然也要有设计),看过许多官方文档/教程,留下深刻印象只有 3 个: Redux 文档:故事性文档,手把手一点点把 redux 设计出来,读起来根本停不下来

2.3K10

React进阶(6)-react-redux使用

前言 撰文:川川 您将在本文当中学习到 react-redux是什么,解决什么问题 UI组件以及容器组件 react-redux两个重要API,Provider以及connect mapStateToProps...npm install --save react-redux 或 yarn add react-redux 安装完成,可以在根目录package.json查看是否有的 对于理解 react-redux...它执行结果依然是一个函数,所以才可以在后面在加上一个圆括号,而圆括号内又接收一个参数,即是UI组件,也是傻瓜组件 有两次 connect执行,第一次 connect函数执行是从react-redux...hooks,有了这个你可以替代Redux,或者react-redux,但是笔者认为,技术没有金弹或者银弹,适合业务技术才是最好 理解redux以及react-redux不妨也是一种技术选择,更好与...React hooks做比较,从而选择一个最适宜.

2K10
领券