再次更新。
useMemo 可以看到,他是有一个return的,缓存的一个值。
const params = useMemo(() => {
return id ? { id: id.toString() } : null;
}, [id]);
下面这个呢,为什么要这么写。
本来我是用 useEffect()去写的,但因为useEffect是渲染DOM后才去执行的,所以,想到了使用useMemo, 下面这样的用法相当于 useLayoutEffect。
useMemo(() => {
columns.splice(2, 4);
}, []);
----------------------------------------------------------------------
1、 useMemo 如果 传入的返回值是函数,那就跟useCallback一样,所以,useMemo应该是跟vue的compute一样功能,缓存计算的变量, 也就是,返回的是变量
2、 useMemo 传入的函数的返回值应该是函数, 常用于防抖节流函数上,不让这个函数重复调用,每次调用都是函数里面的函数。 (不懂把防抖节流看下就知道了,为了维护那个闭包变量。)
参考: React性能优化之React.memo、useMemo和useCallback - 掘金
项目中的一点发现,有时候,useMemo 和 useCallback 两个随便用,效果都一样的,唯一的区别是,用useMemo包裹后,返回的是一个值,用useCallback包裹后,返回的是一个函数。
值就直接使用,缓存函数需要 调用一下
--------------------------------------------------
暂存
这个也很好,useCallback(()=>{},[] ) 是直接缓存里面的东西
useMemo(()=>{ // useMemo 是缓存里面的返回值 就是retun()部分
return ()
},[ ] )
100分 ,讲得简洁,清晰,易懂