useEffect

作者: 我是Msorry | 来源:发表于2021-01-07 13:59 被阅读0次

副作用

  • 对环境或全局变量的改变就是副作用,例如修改document.title,对自己state的改变不是副作用
  • 但我们不一定非要把副作用放在useEffect里
  • 实际上叫afterrender更好,每次render后运行

用途

  • 作为componentDidMount使用,[]变化执行,空数组只在初次渲染执行
  • 作为componentDidUpdate使用,[n,m]n和m变化执行,初始化n和m也是变化,由undifined变成初始值,可设置判断条件,消除初始变化
 useEffect(()=>{
    if(n>0){
      console.log("n变化了")
    }
  },[n])
  • 作为componentWillUnmount使用,通过第一个参数的return设置,对环境的更改,离开前都要清除
  • 以上三种可同时存在

特点

  • 如果同时存在多个useEffect时,会按照出现顺序执行
 useEffect(()=>{
    console.log(1)
  },[])
 useEffect(()=>{
    console.log(2)
  },[])

1
2

import React, {useEffect, useState} from 'react';

function App() {
  const [n, setN] = useState(0)
  const onClick = () => {
    setN(i => i + 1)
  }
  useEffect(()=>{
    console.log(n)
  },[])
  useEffect(()=>{
    if(n>0){
      console.log("n变化了")
    }
  },[n])
  return (
    <div className="App">
      {n}
      <button onClick={onClick}>+1</button>
    </div>
  );
}

export default App;

相关文章

  • 详解react useEffect 和 useLayoutEff

    useEffect 引用官方 使用 useEffect 完成副作用操作。赋值给 useEffect 的函数会在组件...

  • Hooks API

    useEffect useEffect的使用 参考上篇文章 执行时机: useEffect可以看做componen...

  • react hooks 之 useEffect

    useEffect useEffect 可以弥补函数组件没有生命周期的缺点。我们可以在useEffect第一个参数...

  • 从react源码分析useEffect与useLayoutEff

    本文将从useEffect的‘闪烁’问题切入,通过devtools并结合源码来分析useEffect与useLay...

  • useEffect

    目标 页面count会递增 console里面的数会递增 问题描述 页面上的count只会改变一次,即从0变为1 ...

  • useEffect

    副作用 对环境或全局变量的改变就是副作用,例如修改document.title,对自己state的改变不是副作用 ...

  • useEffect

    1. 基本使用 2. 存在依赖项 依赖项为一个空数组[]时只执行一次 只要有一个变化useEffect都会重复执行...

  • useEffect

    1.useEffect的特点1)有两个参数callback和dependencies数组;2)如果dependen...

  • useEffect

    useEffect的用法代替componentDidMount的方式,将useEffect的第二个参数传入空数组或...

  • useEffect

    使用useEffect完成副作用操作。赋值给useEffect的函数会在组件渲染到屏幕之后执行。 在函数组件主体内...

网友评论

      本文标题:useEffect

      本文链接:https://www.haomeiwen.com/subject/jainrktx.html