React函數(shù)式組件Hook中的useEffect函數(shù)的詳細(xì)解析
前言
React函數(shù)式編程沒(méi)有生命周期,因此需要借助useEffect來(lái)實(shí)現(xiàn)。
useEffect的作用
- 發(fā)ajax請(qǐng)求獲取數(shù)據(jù)
- 設(shè)置訂閱/獲取定時(shí)器
- 手動(dòng)更改真實(shí)DOM
useEffect的使用?
1.class組件
在class組件中可以使用生命周期函數(shù),知道組件觸發(fā)的過(guò)程。
代碼如下(示例):
import React, { Component } from 'react'
export default class App extends Component {
constructor(p){
super(p)
this.state = {num: 0}
}
render() {
return (
<div>
<h2>{this.state.num}</h2>
<button onClick={this.addNum.bind(this)}>累加</button>
</div>
)
}
componentDidMount(){
console.log('Mount')
}
componentDidUpdate(){
console.log('Update')
}
componentWillUnmount(){
consoloe.log('Unmount')
}
addNum(){
this.setState({
num: this.state.num+1
})
}
}生命周期(圖)

2.函數(shù)式組件
函數(shù)式組件中沒(méi)有自己的生命周期,需要使用useEffect模擬生命周期。
代碼如下(示例):
import React, { useState, useEffect } from 'react'
function App1(){
const [num, setNum] = useState(0);
const [num1, setNum1] = useState(1)
/*
1.第二個(gè)參數(shù)為空的情況:在初次渲染執(zhí)行一次后,會(huì)監(jiān)聽(tīng)所有數(shù)據(jù)的更新,數(shù)據(jù)更新則會(huì)觸發(fā)useEffect()。(componentDidMount、componentDidUpdate)
2.第二個(gè)參數(shù)為[]的情況:回調(diào)函數(shù)只會(huì)在第一次render()后執(zhí)行。(componentDidMount)
3.第二個(gè)參數(shù)為[監(jiān)聽(tīng)的元素]:在初次渲染執(zhí)行一次后,只會(huì)監(jiān)聽(tīng)相應(yīng)元素變化才會(huì)觸發(fā)回調(diào)函數(shù)。(componentDidMount、componentDidUpdate)
4.useEffect體中使用了return為一個(gè)函數(shù),會(huì)在組件卸載前執(zhí)(componentWillUnmount)
*/
useEffect(()=>{
console.log('useEffect')
}, [num])
return (
<div>
<h1>{num}</h1>
<button onClick={()=>setNum(num+1)}>累加</button>
<h1>{num1}</h1>
<button onClick={()=>setNum1(num1+1)}>累加</button>
</div>
)
}
export default App1;總結(jié)
語(yǔ)法和說(shuō)明
useEffect(()=>{
// 在此可以執(zhí)行任何帶副作用操作
return ()=> { // 在組件卸載前執(zhí)行
// 在此走一些收尾工作,如清除定時(shí)器/取消訂閱等
}
},[stateValue])// 如果指定的是[],回調(diào)函數(shù)只會(huì)在第一次render()后執(zhí)行
//如果第二個(gè)參數(shù)不填,將會(huì)監(jiān)聽(tīng)所有數(shù)據(jù)的更新可以把useEffect Hook 看做如下三個(gè)函數(shù)的組合
- componentDidMount()
- componentDidUpdate()
- componentWillUnmount()
到此這篇關(guān)于React函數(shù)式組件Hook中的useEffect函數(shù)的詳細(xì)解析的文章就介紹到這了,更多相關(guān)React useEffect內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React封裝自定義Hook捕獲所有錯(cuò)誤的實(shí)現(xiàn)方法
在 React 開(kāi)發(fā)中,錯(cuò)誤處理是確保應(yīng)用穩(wěn)定性和用戶體驗(yàn)的重要部分,React 提供了多種錯(cuò)誤捕獲方式,包括錯(cuò)誤邊界**等,本文將詳細(xì)介紹這些方法,并展示如何封裝一個(gè)能夠捕獲所有同步和異步錯(cuò)誤的自定義 Hook,需要的朋友可以參考下2024-12-12
使用webpack配置react-hot-loader熱加載局部更新
這篇文章主要介紹了使用webpack配置react-hot-loader熱加載局部更新,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
完美解決react-codemirror2?編輯器需點(diǎn)擊一下或者延時(shí)才顯示數(shù)據(jù)的問(wèn)題
這篇文章主要介紹了react-codemirror2編輯器需點(diǎn)擊一下或者延時(shí)才顯示數(shù)據(jù)的問(wèn)題,解決方法也很簡(jiǎn)單,需要手動(dòng)引入自動(dòng)刷新的插件,配置一下參數(shù)就可以了,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
詳解如何使用React Hooks請(qǐng)求數(shù)據(jù)并渲染
這篇文章主要介紹了如何使用React Hooks請(qǐng)求數(shù)據(jù)并渲染,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
React 中常用的幾種路由跳轉(zhuǎn)方式小結(jié)
基本路由跳轉(zhuǎn)是最常見(jiàn)的一種方式,下面介紹React 中常用的幾種路由跳轉(zhuǎn)方式,感興趣的朋友一起看看吧2023-12-12
ReactNative頁(yè)面跳轉(zhuǎn)實(shí)例代碼
這篇文章主要介紹了ReactNative頁(yè)面跳轉(zhuǎn)的代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
React Native項(xiàng)目中使用Lottie動(dòng)畫的方法
這篇文章主要介紹了React Native 實(shí)現(xiàn)Lottie動(dòng)畫的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10

