useMemo

59 阅读1分钟

useMemo接受一个函数和依赖数组。当数组中依赖项变化的时候,这个函数就会执行,返回新的值。 useCallback缓存的是回调函数,useMemo缓存的是return的值。

import React,{useState,useMemo, useCallback} from "react"
const App=()=>{
    let [count,setCount]=useState(0);
    let [x,setX]=useState(100)
    //useMemo的返回值就是return回来的值。
    const sum=useMemo(()=>{
       let y=0;
       //当x=100的时候,y返回的值一直是上次缓存下来的5050,所以每次count都和5050相加
       //当点击另一个按钮时,x变为1000,重新计算这个值并存到sum里
       //count这时候就是和1-1000的累加和相加
       for(var i=0; i<=x; i++){
          y+=i;
       }
       return y;
    },[x])
    const sum2=useCallback(()=>{
        setCount(count+sum)
    },[count,sum])
    const changeX=useCallback(()=>{
        setX(1000)
    })
    return <div>
         <button onClick={sum2}>点击求和</button>
         <span>{count}</span>
         <p>
             <button onClick={changeX}>点击x变为1000</button>
             <span>{x}</span>
         </p>
         

    </div>
}
export default App