赞
踩
在函数组件中,可以使用useState
来定义函数组件的状态。使用useState
来创建状态。
useEffect
又称副作用hooks
。作用:给没有生命周期的组件,添加结束渲染的信号。执行时机:在渲染结束之后执行
什么是副作用?
使用:
如果不接受第二个参数,那么在第一次渲染完成之后和每次更新渲染页面的时候,都会调用useEffect
的回调函数。
第二个参数传入一个数组,这个数组表示的是更新执行所依赖的列表,只有依赖列表改变时(当数组中的任意一项变化的时候,useEffect会被重新执行 ),才会触发回调函数
[]
,那么即告诉useEffect
不依赖于state
、props
中的任意值,useEffect
就只会运行一次,常用场景为页面获取数据的方法可以写入此处进行调用,以获取页面初始数据。[num]
、[num,val]
,上述代码变更为如下。那么此时只有当数组中的值(任意一项即可)改变时,才会重新触发回调函数。一般将useLayoutEffect
称为有DOM
操作的副作用hooks
。作用是在DOM
更新完成之后执行某个操作。执行时机:在DOM
更新之后执行。
与useEffect
对比
useLayoutEffect
在DOM
更新之后执行;useEffect
在render
渲染结束后执行。执行示例代码会发现useLayoutEffect
永远比useEffect
先执行,这是因为DOM
更新之后,渲染才结束或者渲染还会结束使用useMemo
可以传递一个创建函数和依赖项,创建函数会需要返回一个值,只有在依赖项发生改变的时候,才会重新调用此函数,返回一个新的值。简单来说,作用是让组件中的函数跟随状态更新(即优化函数组件中的功能函数)。
useMemo
讲完我们来讲一个跟其很相似的叫useCallback
,作用也是让某些操作、方法跟随状态的更新而去执行。
与useMemo
对比。
useMemo(() => Fn,deps)
相当于useCallback(Fn,deps)
不同点:useCallback
是缓存的是一个函数,对传过来的回调函数优化,返回的是一个函数;useMemo
返回值可以是任何,函数,对象等都可以。useCallback
来缓存,因为传入的函数内容会不断执行。相同点:
useMemo
与useCallback
相同。接收一个函数作为参数,也同样接收第二个参数作为依赖列表可以对父子组件传参渲染的问题进行优化。简单来说就是,父组件的传入函数不更新,就不会触发子组件的函数重新执行
通常而言,父组件更新了,那么子组件也会更新。但是如果父组件传入子组件的内容不变,那么子组件某些操作(某些操作是指需要跟随传入内容的改变而同步进行的操作)是没必要执行的,这会影响页面性能,所以我们可以对这情况进行优化。
简单总结使用场景判断:
memo
函数包裹子组件即可useCallback
useMemo
useMemo
。简单来说useRef
就是返回一个子元素索引,此索引在整个生命周期中保持不变。作用也就是:长久保存数据。注意事项,保存的对象发生改变,不通知。属性变更不会重新渲染;
useContext
是让子组件之间共享父组件传入的状态的。作用通俗地说是带着子组件去流浪。
useContext
,createContext
两个内容createContext
创建一个context句柄Context.Provider
来确定数据共享范围value
来分发内容useContext(Context句柄)
来获取数据Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。