react面试题

文章详细阐述了React中类组件与函数组件的区别,包括语法、实例化、生命周期和状态管理。同时,介绍了React优化性能的方法,如React.memo和UseCallback。另外,重点讨论了Hooks的使用,如useState和useEffect,以及它们如何解决函数组件的状态管理和副作用处理问题。
摘要由CSDN通过智能技术生成

一、类组件和函数组件的区别

  1. 从语法上来说:类组件是继承于component类的,内部必须有render方法,必须return一个react元素。而函数组件是一个函数,返回一个jsx元素,比较起来类组件的话,函数组件简单。

  1. 从实例化来说:类组件需要实例化,用this来操作组件本身,而函数组件不需要实例化,没有this,不占内存,函数组件渲染时候只需要调用函数就可以了,执行效率高。

  1. 类组件有生命周期,函数组件没有生命周期,需要调用Hooks函数

  1. 类组件有自己的状态,函数组件没自己的状态,又被称为“无状态组件”

二、React优化性能的手段

  1. 可以使用React.memo进行组件记忆,对于相同的输入,组件不重复执行。

  1. 在函数组件中使用Use.Callback( )和Use.Memo( )来进行组件优化,当依赖列表不发生变化的话,就不用更新组件。

  1. 使用路由懒加载

  1. 不要使用内联函数定义

  1. 减少使用内联样式

  1. 避免在Willxxx系列的生命周期中使用发送请求、操作dom等。

  1. 在类组件中,事件函数在constructor( )中的bind改变this指向

  1. 列表渲染的时候加key

三、hooks

  1. hooks解决的问题

  1. 在函数组件中不能用state,所以用useState来当做函数式组件的状态

  1. 有状态的逻辑组件都可以用自定义的Hooks封装起来

  1. Hooks可以用useEffect处理副作用问题。

  1. 开发效率和质量问题:函数式组件比类组件简洁,效率高,性能也好。

  1. react

1.useState------------模拟类组件的状态管理

  1. useState用来给函数式组件引入组件状态,返回值是一个数组。

  1. 数组的第一个元素是组件状态,第二个是更新组建状态的函数,这个啥书可以让当前组件更新。

  1. 接受一个参数作为初始值,第一个参数是状态,第二个是函数

2.useEffect-----------------副作用(数据获取、dom操作影响页面——在渲染结束之后执行)

  1. 用来给函数组件引入生命周期

  1. 他有两个参数,第一个参数是函数,第二个是依赖列表,只有依赖列表发生变化的时候,函数才会执行

  1. 几种写法

1.第一种写法,可以类比类组件的componentDidMount和componentDidUpdata方法(这个是组件初次挂载,后续的每次更新都会执行)

useEffect(()=>{
    console.log('这是类比类组件的componentDidMount和componentDidUpdata方法')
})

2.第二种写法可以类比类组件的componentDidMount方法(组件初次挂载执行一次)

useEffect(()=>{
    console.log('可以类比类组件的componentDidMount方法')
},[])

3.第三种写法,可以类比类组件的componentDidUpdate方法(组件每次更新时都会执行一次)

这个写法。只会在[ ]中所监听的数据发生变化时,才会执行

useEffect(()=>{
    console.log('可以类比类组件的componentDidUpdate方法')
},[str])

4.第四种写法,return后面的写法是卸载的时候执行的

useEffect(()=>{
    console.log('可以类比类组件的componentDidUpdate方法')
    return ()=>{
        console.log('return后面的写法是卸载的时候执行的')
    }
},[])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值