React新特性一览

本文介绍了React的新特性,包括用static getDerivedStateFromProps和componentDidCatch替换生命周期方法,以及Hook的使用。Hook使得在无状态组件中使用state和执行副作用变得简单。重点讲解了useState用于设置和更新状态,useEffect用于模拟组件生命周期的多个阶段,特别是如何处理需要清除的副作用。同时强调了Hook的使用规则,确保它们在每次渲染时按顺序调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 生命周期
  1. componentWillMount和componentWillReceiveProps替换为static getDerivedStateFromProps。getDerivedStateFromProps 会在调用 render 方法之前调用,并且在初始挂载及后续更新时都会被调用。它应返回一个对象来更新 state,如果返回 null 则不更新任何内容
  2. 新增错误处理生命周期 static getDerivedStateFromError和componentDidCatch

getDerivedStateFromError生命周期会在后代组件抛出错误后被调用。 它将抛出的错误作为参数,并返回一个值以更新 state,getDerivedStateFromError() 会在渲染阶段调用,因此不允许出现副作用。 如遇此类情况,请改用 componentDidCatch()。

 

  • HOOK
           hook特性可以它让你在不编写 class 的情况下使用 state 以及其他的 React 特性它是一个特殊的函数
    1. hook之useState

             通常情况下无状态组件是没有办法使用组件状态的,那么现在通过useState即可实现在无状态组件中使用组件状态(在这里无状态组件叫做函数组件好一点)。
             在上面的例子中`const [count, setCount] = useState(0);`
    我们调用useState函数的时候,定义了一个变量叫做count(名字随意),它的初始值就是在setCount中传入的参数而setCount(名字随意)就是一个改变count的函数,这类似于状态组件当中在state中定义count,而setCount的作用类似于调用this.setState()来改变count。  这里需要注意的是调用useState的时候需要成对的获取一个变量和一个可以修改变量的函数(在这里即是count和setCount)
    2. hook之useEffect
                该hook可以使你在无状态组件(也叫函数组件)中执行副作用(例如请求数据或者清除定时器等)操作,我们可以把该hook看做是componentDidMount/componentDidUpdate/componentWillUnmount三个生命周期函数的组合,即在该三个生命周期函数任意一个触发的时候,useEffect也会被触发

    在上面的例子中,当组件挂载完成后即useEffect会被触发,当我们调用setCount函数修改count的值之后useEffect会被触发,当组件卸载时也会触发useEffect
             在这里我们可以把常见的副作用分为两类:需要清除的(例如定时器、事件监听器等)和不需要清除的(例如ajax请求等),这里我们主要讲一下需要清除的副作用怎么来操作:很简单,你只需要让useEffect函数返回一个函数即可,那么该函数就会在组件卸载的时候执行,你只需要在该函数里面执行清除操作(例如clearInterval(timer))就Ok了
    3. hook规则:
    只在对顶层使用hook,不要在循环,条件或者嵌套函数中调用hook,遵循这条规则可以确保hook在每次渲染中都按照同样的顺序被调用,这可以是React在多次的useState和useEffect调用之间保持hook状态的正确。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值