useEffect

作者: penelope_2bad | 来源:发表于2020-06-21 21:20 被阅读0次

1. 基本使用

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

const Fetch = () => {
  const [result, setResult] = useState(null)

  useEffect(() => {
    fetch('./index.html').then(res => {
      console.log('--res', res.body);
      setResult(res.url)
    })
  })

  return (
    <div>
      result: {result}
    </div>
  )
}

function App() {
  return (
    <div className="App">
      <Fetch />
    </div>
  )
}

export default App

2. 存在依赖项

  1. 依赖项为一个空数组[]时只执行一次
  2. 只要有一个变化useEffect都会重复执行
  useEffect(() => {
    fetch('./index.html').then(res => {
      setResult(res.url)
    })
  }, [a, b])
  1. capture value
    如果在没有依赖的情况下,会捕获初次执行时获得的状态值,之后会一直使用此状态值,哪怕外部的状态值发生了变化
 useEffect(() => {
   console.log(count);
   setInterval(() => {
     // capture value 特性使得count一直是0
     setCount(count + 1)
   }, 500)
 }, [])

image.png
  const [count, setCount] = useState(0)

  useEffect(() => {
    const timer = setTimeout(() => {
      setCount(count + 1)
    }, 500)
    return () => clearTimeout(timer)
  },[count])
  1. react hooks不予许在条件语句,或者条件语句后面执行
    react hooks会把所有的hooks当做一个链表存储,
    如果有if语句,会让组件提前结束,hooks添加不到链表中
  // 条件语句中添加effect是不允许的
  if (count > 5) {
    useEffect(() => {
      console.log(count);
    })
  }

  // 这种也是不可以的
  if (count > 5) {
    return null
  }

  useEffect(() => {
    console.log(count);
  })

相关文章

  • 详解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/nsaaxktx.html