全书目录

第一篇:React 完全指南 —— 空调宇宙

第十章:useMemo & useCallback —— 省电模式

1 分钟 89 字 第 32 / 962 个阅读单元
tsx
function ElectricBill({ rooms, pricePerKWh }) {
  const totalBill = useMemo(() => {
    console.log('重新计算电费...');
    return rooms.reduce((sum, room) => {
      return sum + room.runHours * room.power * pricePerKWh;
    }, 0);
  }, [rooms, pricePerKWh]);

  return <div>总电费: ¥{totalBill}</div>;
}

function LivingRoom() {
  const [temp, setTemp] = useState(26);

  const handleTempChange = useCallback((newTemp) => {
    setTemp(newTemp);
  }, []);

  return <RemoteControl onTempChange={handleTempChange} />;
}
useMemo useCallback
缓存什么 计算结果 函数本身
类比 电费算过一次,没变就不重算 遥控器按钮逻辑没变,就不换新遥控器
什么时候用 计算量大 函数要传给子组件