Hooks相关面试题

1.为什么会有React Hooks,它解决了什么问题?

        完善函数组件的能力,函数组件更适合react组件

        组件逻辑复用,Hooks表现更好

        class组件复杂

                class组件中,相同的逻辑散落在各处。

                DidMount和DidUpdate中获取数据

                DidMount绑定事件,WillUnMount解绑事件

                使用Hooks,相同逻辑可分割到一个一个的useEffect中

        

                

2.React Hooks如何模拟组件生命周期?

        componentDidMount -- useEffect依赖[]

        componentDidUpdate --useEffect无依赖,或者依赖[a, b](响应式值)

        componentWillUnMount -- useEffect中返回一个函数fn,下一次执行useEffect之前,就会执行fn,无论更新或卸载

        

3.如何自定义HOOKS?

4.React Hooks性能优化

        useMemo缓存数据

                在多次重新渲染中缓存计算结果,主要用于缓存代价昂贵计算的结果。提高性能

        useCallback缓存函数:在多次渲染中缓存函数。

                跳过组件的重新渲染:默认情况下,当一个组件重新渲染时,react会递归渲染它的所

                有子组件,如果子组件包裹在memo中,并且当props和上次渲染相同时,子组件会

                跳过重新渲染。但是如果函数作为props传递。则每次重新渲染的props都是不同的。

                子组件就会重新渲染。memo对性能的优化永远不会生效。如果将函数用useCallback

                包裹起来就可以确保多次重新渲染之间是相同的函数。作为useEffect的依赖也是同样

                的道理

        memo在组件props没有改变的情况下跳过重新渲染。默认使用object.is()也比较每个prop

        相当于class组件的SCU和pureComponent(默认提供scu)

5.使用React Hooks遇到哪些坑?

        1.useEffect依赖最好不要是引用类型。把它们移动到组件外或者effect内。

        因为hooks每次重新执行都会创建一个新的引用类型。会使Effect比需要的更频繁地重新

        同步,甚至导致死循环。

        2.useState初始化只会执行一次。之后的re-render都是读取state的值。如果state是根

        据props来创建的。当props改变时,并不会自动修改state的值。

        3.state是一个快照。在一次渲染中state的值不会改变。无论是在事件处理函数中还是

        effect中,或者是定时器中。设置state只会为下一渲染变更state的值。

                例如:

                        const [count, setCount] = useState(0)

                        setCount(count+ 1)

                        setTimeout(() => {
                                console.log(count) // 0

                          }, 1000)

6.Hooks相比于HOC 和 Render prop有哪些优点?

        符合hooks原有规则,容易理解记忆

        变量作用域明确

        不会产生组件嵌套问题(对比Class组件)

        render props本质上是一个函数组件。函数组件只能写一些简单逻辑,没有状态保存。需要

        是一个纯函数

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Hooks是React 16.8版本引入的特性,解决了一些函数组件在处理状态和副作用时的限制和不便之处。函数组件是一种更简洁、更可复用的组件编写方式,但在过去,它们无法像类组件那样保存和更新状态,也无法使用生命周期方法和其他副作用。React Hooks解决了这些问题,使函数组件能够拥有类组件的能力。 React Hooks的优势包括: 1. 完善函数组件的能力:通过useState Hook,函数组件可以保存和更新状态,使其功能更加完善。 2. 组件逻辑复用:通过自定义Hook,可以将组件的逻辑复用,使组件之间可以共享状态和逻辑。 3. 简化复杂组件:Hooks使得复杂组件变得更易理解和拆解,减少了使用类组件时可能出现的混乱和逻辑重叠的问题。 4. 更好的测试性:使用Hooks可以更方便地对组件进行单元测试,因为函数组件本身就是纯函数,更易于隔离和测试。 关于React Hooks的一些面试题包括: 1. React为什么引入Hooks?Hooks解决了哪些问题? 2. 使用Hooks可能会遇到的问题和陷阱有哪些? 3. 常用的Hooks有哪些?例如useState、useEffect、useContext等。 4. Hooks如何模拟类组件中的生命周期方法?与类组件的生命周期有何区别? 5. Hooks相比于高阶组件(HOC)和Render Props有哪些优点? 6. useState和setState的参数和用法有何区别? 7. useReducer和redux的区别是什么? 8. Hooks如何进行性能优化? 9. 如何在高阶组件中访问组件实例? 以上是一些常见的React Hooks面试题,希望能对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [reacthooks相关面试题](https://blog.csdn.net/weixin_43972437/article/details/117399682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [React Hooks面试题](https://blog.csdn.net/MichelleZhai/article/details/118392437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值