• Effect Hook


    1 数据获取,设置订阅以及手动更改 React 组件中的 DOM 都属于副作用。

    2 可以把 useEffect Hook 看做 componentDidMountcomponentDidUpdate 和 componentWillUnmount 这三个函数的组合。

    3 useEffect函数第二个参数是可选的:

      如果不传,则每次渲染都执行副作用;

      如果传入数组,则数组的成员变化了(比较引用地址),才执行副作用。

    一 不需要清除的副作用

    import React, { useState, useEffect } from "react";
    
    // 记录渲染次数
    let times = 0;
    
    export default function App(props) {
      console.log(`第${++times}次渲染`);
    
      const [counter, setCounter] = useState(0);
    
      useEffect(() => {
        document.title = `第${counter}次点击`;
      });
    
      return (
        <div>
          <button onClick={e => setCounter(counter + 1)}>按钮</button>
        </div>
      );
    }

    二 需要清除的副作用

    import React, { useState, useEffect } from "react";
    
    export default function App(props) {
      const [size, setSize] = useState({
         window.innerWidth,
        height: window.innerHeight
      });
    
      useEffect(() => {
        window.addEventListener("resize", onResize, false);
        return () => {
          window.removeEventListener("resize", onResize, false);
        };
      }, []);
    
      const onResize = e => {
        setSize({
           window.innerWidth,
          height: window.innerHeight
        });
      };
    
      return (
        <div>
          窗口尺寸:{size.width}*{size.height}
        </div>
      );
    }
  • 相关阅读:
    [bzoj1280]卖猪
    [51nod1237]最大公约数之和V3
    [cf741C]Arpa’s overnight party and Mehrdad’s silent entering
    [bzoj1576]安全路径
    [bzoj1143]祭祀
    db_writer_processes默认大小
    oracle审计功能启动关闭
    db_writer_processes默认大小
    手机发博客
    第27课 .net程序破解
  • 原文地址:https://www.cnblogs.com/sea-breeze/p/11068326.html
Copyright © 2020-2023  润新知