react hooks 之 useEffect

2021-08-26  本文已影响0人  my木子

useEffect

import React, { useEffect, useState } from "react";
import './App.css';

function App() {
    let [num1, setNum1] = useState(0);
    let [num2, setNum2] = useState(0);

    const add1 = () =>{
      setNum1(num1+1);
    }
    const add2 = () =>{
      setNum2(num2+1);
    }

  // 实时监听所有
  // useEffect(()=>{
  //   console.log('num1', num1);
  //   console.log('num2', num2);
  //   console.log('============');
  // })

  // 只在初次渲染时监听
  // useEffect(()=>{
  //   console.log('num1', num1);
  //   console.log('num2', num2);
  //   console.log('============');
  // },[])

  // 实时监听 num1
  useEffect(()=>{
    console.log('num1', num1);
    console.log('num2', num2);
    console.log('============');
  },[num1]);



  return (
      <div className="App">
        <h1 onClick={add1}>num1:{num1}</h1>
        <h1 onClick={add2}>num2:{num2}</h1>
    </div>
  );
}

export default App;

import React, { useEffect, useState } from "react";
import './App.css';

/* 定时器 延时器等 */
const timer = setInterval(()=>console.log('setInterval'), 1000);

/* 模拟事件监听处理函数 */
const handleResize =()=>{
  console.log('handleResize');
}
/* 事件监听 */
window.addEventListener('resize', handleResize);

function App() {
    let [num1, setNum1] = useState(0);

    const add1 = () =>{
      setNum1(num1+1);
    }

    // num1的值变化时清除
    useEffect(()=>{
      return function(){
        console.log('num1 值变化了');
        clearInterval(timer);
        window.removeEventListener('resize', handleResize);
      }
    }, [num1]);

    return (
        <div className="App">
          <h1 onClick={add1}>num1:{num1}</h1>
      </div>
    );
}

export default App;
上一篇下一篇

猜你喜欢

热点阅读