欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React中的useEffect四種用法分享

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

什么是 useEffect ?

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

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

我們先來說說 第一種用法

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

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

錯誤示例

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

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

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

所以 你應(yīng)該這樣寫 ,傳入 useEffect 第二個參數(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 : 當我們在組件渲染的過程中 ,如果你寫了多個useEffect 它會怎么做 ?

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

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

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

當你想去依賴某些變量的時候去觸發(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

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

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

4 :useEffect 的返回值

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

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ù)時 它會在組件銷毀的時候自動回調(diào)該函數(shù),你可以在該函數(shù)中做一些清理操作,等等

結(jié)束啦

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

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

相關(guān)文章

  • 使用React Native創(chuàng)建以太坊錢包實現(xiàn)轉(zhuǎn)賬等功能

    使用React Native創(chuàng)建以太坊錢包實現(xiàn)轉(zhuǎn)賬等功能

    這篇文章主要介紹了使用React Native創(chuàng)建以太坊錢包,實現(xiàn)轉(zhuǎn)賬等功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • react-native-tab-navigator組件的基本使用示例代碼

    react-native-tab-navigator組件的基本使用示例代碼

    本篇文章主要介紹了react-native-tab-navigator組件的基本使用示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • 使用React18和WebSocket構(gòu)建實時通信功能詳解

    使用React18和WebSocket構(gòu)建實時通信功能詳解

    WebSocket是一種在Web應(yīng)用中實現(xiàn)雙向通信的協(xié)議,它允許服務(wù)器主動向客戶端推送數(shù)據(jù),而不需要客戶端發(fā)起請求,本文將探索如何在React?18應(yīng)用中使用WebSocket來實現(xiàn)實時通信,感興趣的可以了解下
    2024-01-01
  • 為react組件庫添加typescript類型提示的方法

    為react組件庫添加typescript類型提示的方法

    這篇文章主要介紹了為react組件庫添加typescript類型提示,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • react高階組件經(jīng)典應(yīng)用之權(quán)限控制詳解

    react高階組件經(jīng)典應(yīng)用之權(quán)限控制詳解

    在React中,高階組件是重用組件邏輯的一項高級技術(shù)。下面這篇文章主要給大家介紹了關(guān)于react高階組件經(jīng)典應(yīng)用之權(quán)限控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • 如何使用React構(gòu)建一個擲骰子的小游戲

    如何使用React構(gòu)建一個擲骰子的小游戲

    這篇文章主要介紹了如何使用React構(gòu)建一個擲骰子的小游戲,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 基于React編寫一個全局Toast的示例代碼

    基于React編寫一個全局Toast的示例代碼

    前些日子在做項目的時候,需要封裝一個Toast組件,我想起之前用過的庫,只要在入口文件中引入就可以在全局中使用,還是很方便的,借這次機會也來實現(xiàn)一下,所以本文介紹了React中如何編寫一個全局Toast,需要的朋友可以參考下
    2024-05-05
  • React?UI組件庫之快速實現(xiàn)antd的按需引入和自定義主題

    React?UI組件庫之快速實現(xiàn)antd的按需引入和自定義主題

    react入門學習告一段路,下面這篇文章主要給大家介紹了關(guān)于React?UI組件庫之快速實現(xiàn)antd的按需引入和自定義主題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 解讀useState第二個參數(shù)的"第二個參數(shù)"

    解讀useState第二個參數(shù)的"第二個參數(shù)"

    這篇文章主要介紹了useState第二個參數(shù)的"第二個參數(shù)",具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React中key屬性的警告及解決方案

    React中key屬性的警告及解決方案

    在使用 React 進行開發(fā)時,key 屬性是一個至關(guān)重要的概念,尤其在渲染列表時,開發(fā)者在使用 key 屬性時,常常會遇到各種警告信息,本文將詳細解析這些警告的原因,提供有效的解決方案,并總結(jié)最佳實踐,需要的朋友可以參考下
    2024-12-12

最新評論