0%

useMemo和useCallback的区别

先来复习一下react 常用的Hook

1
useCallback(fn,deps)相当于useMemo(()=> fn,deps)

1、 useMemouseCallback接收的参数都是一样,都是在其依赖项发生变化后才执行,都是返回缓存的值,区别在于useMemo返回的是函数运行的结果useCallback返回的是函数

2、 useCallback应该和React.memo配套使用,缺了一个都可能导致性能不升反而下降。

3、记下遇到的bug ,此处存在疑惑,因为我将两个调换顺序后报错了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let filterProductByBrands = useCallback((() => {
return originalProducts.filter(
(product) => product.brand.brandName.indexOf(selectedBrand) >= 0
)
})(),[originalProducts, selectedBrand])

相当于

let filterProductByBrands = useMemo(() => {
return originalProducts.filter(
(product) => product.brand.brandName.indexOf(selectedBrand) >= 0
)
},[originalProducts, selectedBrand])