最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React中的useEffect四種用法分享

 更新時(shí)間:2023年07月11日 11:18:16   作者:前端小張同學(xué)  
這篇文章主要給大家分享React中的useEffect四種用法,useEffect中 觸發(fā)更新,重復(fù)的 useEffect,依賴值觸發(fā)回調(diào),useEffect 的返回值,通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下

什么是 useEffect ?

官方解釋 : useEffect 是一個(gè) React Hook,它允許你將組件與外部系統(tǒng)同步。

什么意思 ? 個(gè)人理解就是 它能根據(jù)不同的依賴值或者返回值,在不同的時(shí)機(jī)進(jìn)行執(zhí)行。

我們先來說說 第一種用法

1 : useEffect 中 觸發(fā)更新

示例1 : 當(dāng)我們?cè)诮M件創(chuàng)建的過程,自動(dòng)執(zhí)行某些操作的時(shí)候 , 那我們可以在函數(shù)式組件中這樣

錯(cuò)誤示例

import { useEffect } from 'react'
function App () {
const [ count , setCount] = useState(0)
useEffect(()=> {
    initData()
})
const initData = () => {
    setCount(count + 1)
}
return ( <div> {count} </div> )
}

如果你這種用 useEffect 你會(huì)發(fā)現(xiàn) 什么問題 ?

當(dāng)我們組件 渲染完成去執(zhí)行 useEffect 調(diào)用 initData 函數(shù) 函數(shù)通過 setCount 設(shè)置值觸發(fā)更新,一旦更新 useEffect 又會(huì)在渲染的最后執(zhí)行,這樣就照成了 死循環(huán)

所以 你應(yīng)該這樣寫 ,傳入 useEffect 第二個(gè)參數(shù) 空數(shù)組,代表組件渲染過程中只執(zhí)行一次

正確示例

import { useEffect } from 'react'
function App () {
const [ count , setCount] = useState(0)
useEffect(()=> {
    initData()
}, [])
const initData = () => {
setCount(count + 1)
}
return ( <div> {count} </div> )
}

2 : 用法2 重復(fù)的 useEffect

示例2 : 當(dāng)我們?cè)诮M件渲染的過程中 ,如果你寫了多個(gè)useEffect 它會(huì)怎么做 ?

import { useEffect, useState } from 'react';
function Effect() {
  const [count, setCount] = useState(0)
  useEffect(() => {
    console.log('111');
  })
  useEffect(() => {
    console.log('222');
  })
  return (<div> {count} </div>)
}
export default Effect

想當(dāng)然 , 它不會(huì)覆蓋前面的 useEffect ,會(huì)根據(jù)你的 編寫順序進(jìn)行收集,然后循環(huán)執(zhí)行(當(dāng)然這只是我的猜測(cè),暫時(shí)還沒看react源碼)

3 :依賴值觸發(fā)回調(diào)

當(dāng)你想去依賴某些變量的時(shí)候去觸發(fā)回調(diào)函數(shù),你可以這樣。

import { useEffect, useState } from 'react';
function Effect() {
  const [count, setCount] = useState(0)
  useEffect(() => {
    console.log('count發(fā)生了變化最新值為' + count);
  }, [count])
  return (<div>
    <div>
      {count}
    </div>
    <button onClick={() => setCount(count + 1)}>加1</button>
  </div>)
}
export default Effect

當(dāng)你的第二個(gè)參數(shù)是數(shù)組,并且是依賴項(xiàng),組件初次渲染也會(huì)執(zhí)行,這是為什么呢 ?

解答 : 如果從 react useState Hook 來說,也就是 react 將你傳入的 默認(rèn)值 給你重新賦值了,所以發(fā)生了變化,因此 useEffect 發(fā)生了更新

4 :useEffect 的返回值

當(dāng)useEffect 傳入的 回調(diào)函數(shù)有返回值時(shí)并且為一個(gè) 函數(shù)的時(shí)候,它會(huì)怎么做?

import { useEffect, useState } from 'react';
const Room = () => {
  useEffect(() => {
    console.log("子組件渲染完成")
    return () => {
      console.log("子組件useeffect 回調(diào)函數(shù)執(zhí)行")
    }
  }, [])
  return (<div>
    這是我的房間 , 大家一起來玩呀
  </div>)
}
function Effect() {
  const [show, setShow] = useState(true)
  return (<div>
    <div>
      {show && <Room></Room>}
    </div>
    <button onClick={() => setShow(!show)}>加1</button>
  </div>)
}
export default Effect

解答 : useEffect函數(shù) 的返回值 如果是函數(shù)時(shí) 它會(huì)在組件銷毀的時(shí)候自動(dòng)回調(diào)該函數(shù),你可以在該函數(shù)中做一些清理操作,等等

結(jié)束啦

好了,最后到這次本章了解的知識(shí)就到此結(jié)束了,如果有哪里寫的不對(duì)的地方或者有更好的使用方式,歡迎大家在評(píng)論區(qū)留言!

到此這篇關(guān)于React中的useEffect四種用法分享的文章就介紹到這了,更多相關(guān)React useEffect用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React?組件中?State?的定義、使用及正確使用方式

    React?組件中?State?的定義、使用及正確使用方式

    本文詳細(xì)介紹了React組件中的state概念,包括其定義、使用方式以及如何正確更新state,通過ES6和ES7類組件的示例,展示了如何在React中定義和使用state,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • react使用antd表單賦值,用于修改彈框的操作

    react使用antd表單賦值,用于修改彈框的操作

    這篇文章主要介紹了react使用antd表單賦值,用于修改彈框的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • React Router V5:使用HOC組件實(shí)現(xiàn)路由攔截功能

    React Router V5:使用HOC組件實(shí)現(xiàn)路由攔截功能

    這篇文章主要介紹了React Router V5:使用HOC組件實(shí)現(xiàn)路由攔截功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • React中傳遞組件的三種方式小結(jié)

    React中傳遞組件的三種方式小結(jié)

    通過傳遞組件,我們可以將復(fù)雜組件內(nèi)部的一部分 UI 交由外部組件來控制渲染,這也是控制反轉(zhuǎn)(Inversion of Control)的一種體現(xiàn),在 React 中,我們可以通過三種方式來傳遞組件,本文就來給大家述說這三種方式,需要的朋友可以參考下
    2023-07-07
  • react父組件調(diào)用子組件的方式匯總

    react父組件調(diào)用子組件的方式匯總

    在react中常用props實(shí)現(xiàn)子組件數(shù)據(jù)到父組件的傳遞,但是父組件調(diào)用子組件的功能卻不常用,下面這篇文章主要給大家介紹了關(guān)于react父組件調(diào)用子組件的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • React?component.forceUpdate()強(qiáng)制重新渲染方式

    React?component.forceUpdate()強(qiáng)制重新渲染方式

    這篇文章主要介紹了React?component.forceUpdate()強(qiáng)制重新渲染方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 通過React-Native實(shí)現(xiàn)自定義橫向滑動(dòng)進(jìn)度條的 ScrollView組件

    通過React-Native實(shí)現(xiàn)自定義橫向滑動(dòng)進(jìn)度條的 ScrollView組件

    開發(fā)一個(gè)首頁擺放菜單入口的ScrollView可滑動(dòng)組件,允許自定義橫向滑動(dòng)進(jìn)度條,且內(nèi)部渲染的菜單內(nèi)容支持自定義展示的行數(shù)和列數(shù),在內(nèi)容超出屏幕后,渲染順序?yàn)榭v向由上至下依次排列,對(duì)React Native橫向滑動(dòng)進(jìn)度條相關(guān)知識(shí)感興趣的朋友一起看看吧
    2024-02-02
  • React styled-components設(shè)置組件屬性的方法

    React styled-components設(shè)置組件屬性的方法

    這篇文章主要介紹了styled-components設(shè)置組件屬性的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • React Suspense 異步渲染完全指南

    React Suspense 異步渲染完全指南

    React Suspense為異步數(shù)據(jù)獲取提供了一種全新的編程范式,本文主要介紹了React Suspense異步渲染完全指南,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • React組件設(shè)計(jì)過程之仿抖音訂單組件

    React組件設(shè)計(jì)過程之仿抖音訂單組件

    這篇文章主要介紹了React組件設(shè)計(jì)過程之仿抖音訂單組件的實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

呼和浩特市| 白山市| 阜康市| 永嘉县| 侯马市| 铁力市| 伊春市| 教育| 安吉县| 望奎县| 新竹市| 阳曲县| 杭锦后旗| 图们市| 喀喇沁旗| 盐山县| 靖远县| 临夏县| 资溪县| 南通市| 庆阳市| 新龙县| 修水县| 海兴县| 成都市| 密山市| 大方县| 绥棱县| 万山特区| 建平县| 罗田县| 灵石县| 五华县| 吉林市| 新化县| 涞源县| 金门县| 芒康县| 云和县| 江北区| 澜沧|