全书目录

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

第六章:useEffect —— 空调的自动控制程序

1 分钟 70 字 第 28 / 962 个阅读单元

空调不光是你按才动,它还有自动逻辑:温度到了自动停机,开机后自动连 WiFi,关机前自动保存设置。

tsx
function AirConditioner() {
  const [temp, setTemp] = useState(26);
  const [roomTemp, setRoomTemp] = useState(30);
  const [isOn, setIsOn] = useState(false);

  useEffect(() => {
    connectToWiFi();
    console.log('空调已连接 WiFi');

    return () => {
      disconnectWiFi();
      console.log('空调已断开 WiFi');
    };
  }, []);

  useEffect(() => {
    if (roomTemp <= temp) {
      console.log('室温达标,压缩机暂停');
    }
  }, [roomTemp, temp]);

  useEffect(() => {
    if (!isOn) return;

    const timer = setInterval(() => {
      setRoomTemp(t => t - 0.5);
    }, 1000);

    return () => clearInterval(timer);
  }, [isOn]);

  return <div>室温: {roomTemp}°C | 设定: {temp}°C</div>;
}

useEffect 依赖数组速查

text
useEffect(() => { ... }, [a, b])  → a 或 b 变化时执行
useEffect(() => { ... }, [])      → 只在挂载时执行一次
useEffect(() => { ... })          → 每次渲染都执行(少用)