React 2024 年 3 月 19 日
react(三)-useMemo&useCallback
react(三)-useMemo&useCallback
react(三)-useMemo&useCallback
useMemo
const counter2 = useMemo(function () {
console.log('counter2运算一次')
return count * 2
},[deps])
useMemo 缓存返回的值,根据deps的依赖来刷新缓存的值
import {memo, useMemo, useCallback, useState, useEffect} from "react";
function App() {
const [count, setCount] = useState(0)
const memoText = useMemo(() => {
console.log('this is Date',new Date())
},[Math.floor(count / 10)])
useEffect(() => {
if (count % 10 === 0) {
// console.log('this is Date', new Date());
}
},[count])
return <div>
count:{count}
<button onClick={() => setCount(prev => prev += 1)}>点击btn</button>
</div>
}
export default App
比如我想count等于10的倍数,不包含0。的时候缓存memo里的新返回。为什么不能用count % 10 === 0呢,因为20的时候返回true,21的时候返回false,那么deps发生改变,会触发deps再重新缓存一次。
所以用Math.floor(count / 10),就保证在20-29之间都是返回2,30-39之间都是返回3。值是在此区间是不变的。
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
作者: 保安 发表日期:2024 年 3 月 19 日