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 native帶索引的城市列表組件的實(shí)例代碼
本篇文章主要介紹了react-native城市列表組件的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08react-router?重新加回跳轉(zhuǎn)攔截功能詳解
這篇文章主要為大家介紹了react-router?重新加回跳轉(zhuǎn)攔截功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02react?hooks中的useState使用要點(diǎn)
這篇文章主要為大家介紹了react?hooks中的useState使用要點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09React前端渲染優(yōu)化--父組件導(dǎo)致子組件重復(fù)渲染的問(wèn)題
本篇文章是針對(duì)父組件導(dǎo)致子組件重復(fù)渲染的優(yōu)化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08react native 原生模塊橋接的簡(jiǎn)單說(shuō)明小結(jié)
這篇文章主要介紹了react native 原生模塊橋接的簡(jiǎn)單說(shuō)明小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02