React中的hook之useEffect

81 阅读2分钟

1. useRef介绍

useEffect是一个特殊的hook,我们在创建React应用中,useEffect是必不可少的,但是在官方的解释中,推荐尽量少用useEffect,只有 将组件与外部系统同步,才需要,而实际开发中,通过接口获取数据,拿到浏览器相关API,或者是控制非React组件,都会用到,useEffect的英文含义叫做 副作用,也可以称为副作用事件,当页面渲染完成,将会执行useEffect

2.何时使用useRef

1.连接外部系统: 网络请求,浏览器API,第三方库

2.读取最新的state和props

3.自定义hook

3.使用方法

useEffect接受两个参数,分别为回调函数和依赖项:

1.回调函数:操作内容

2.依赖项:依赖项变化,调用回调函数中的内容

 import { useEffect } from "react";
    function App() {
      useEffect(() => {
      console.log('react')  //初始化打印出 react
      }, []);               //依赖项为空,只调用一次
      return <div></div>;
    }

export default App;
------------------------------------------------
import { useEffect } from "react";
    function App(props) {
       const { data } = props;
          useEffect(() => {
            console.log("react");//初始化打印出 react
          }, [data]);            //依赖项为data,每次data改变,都会打印 react
          return <div></div>;
    }

export default App;

------------------------------------------------
import { useEffect } from "react";
    function App(props) {
       const { data } = props;
          useEffect(() => {
            console.log("react");             //初始化打印出 react
             return () => {                   //回调函数return一个回调函数,每次执行或组件卸载调用
              console.log("卸载");            //一般用作卸载监控,定时器,初始化数据等
            };
          }, [data]);                         //依赖项为data,每次data改变,都会打印 react
          return <div></div>;
    }

export default App;

4.总结

如何理解useEffect?useEffect像是React整合了生命周期的概念,初始化时调用,卸载时return,需要更新时添加依赖项,依赖项改变,则执行更新。需要注意的一点是,避免在依赖项添加state属性时,更新state,否则会出现循环 loop的问题