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

React-Hook中使用useEffect清除定時器的實現(xiàn)方法

 更新時間:2022年11月03日 11:25:41   作者:北海的大魚  
這篇文章主要介紹了React-Hook中useEffect詳解(使用useEffect清除定時器),主要介紹了useEffect的功能以及使用方法,還有如何使用他清除定時器,需要的朋友可以參考下

useEffect

之前我們學(xué)習(xí)了class組件的聲明周期,那么我們想在函數(shù)式組件中做一些聲明周期有關(guān)操作能否實現(xiàn)呢?
函數(shù)式組件中是沒有生命周期的,所以就可以使用useEffect來替代。我們可以把useEffect看作組件加載、組件更新、組件卸載的三個生命周期方法的組合。

下面我們一起來通過案例學(xué)習(xí)useEffect的使用:
1.這里需求是寫一個點擊事件讓state累加,并且吧state展示在title上
2.首先要導(dǎo)入React, { useState, useEffect }
3.然后使用 useEffect將state渲染給title
4.最后綁定點擊事件

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

export default function App() {
    const [state, setstate] = useState(0)

    useEffect(() => {
        document.title = `你點擊了${state}次`
    })
    return (
        <div>
            <h1>{state}</h1>
            <button onClick={e => setstate(state + 1)}>點擊</button>
        </div>
    )
}

查看運行效果:

在這里插入圖片描述

所以我們可以發(fā)現(xiàn):默認(rèn)情況下,useEffect會在第一次渲染之后和每次更新之前都會執(zhí)行

基于它的這個特性,我們再來看一個例子:
1.實現(xiàn)的效果是,點擊按鈕能切換狀態(tài)是否顯示page頁面,page頁面的按鈕能夠控制age和money的改變,比較簡單,大家應(yīng)該都能看懂

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

function Page() {
    const [age, setage] = useState(18)
    const [money, setmoney] = useState(1000)

    useEffect(() => {
        console.log('我被執(zhí)行了')
    })
    return (
        <div>
            <h1>{age}</h1>
            <h2>{money}</h2>
            <button onClick={e => setage(age + 1)}>長大</button>
            <button onClick={e => setmoney(money + 1000)}>變有錢</button>
        </div>
    )
}

export default function App() {
    const [show, setshow] = useState(true)
    return (
        <div>
            <h1>{show}</h1>
            <button onClick={e => setshow(!show)}>切換狀態(tài)</button>
            {show && <Page/>}
        </div>
    )
}

我這里在useEffect中進行了打印,下面我們來看看何時會觸發(fā)useEffect

在這里插入圖片描述

可以看到每次更新的時候都會觸發(fā)useEffect,這里的useEffect還可以傳入?yún)?shù),例如:
在后面的數(shù)組中寫入age和money,實現(xiàn)的效果是一樣的

useEffect(() => {
        console.log('我被執(zhí)行了')
    }, [age, money])

但是如果只寫一個:

useEffect(() => {
        console.log('我被執(zhí)行了')
    }, [age])

查看結(jié)果:

在這里插入圖片描述

可以看到age狀態(tài)發(fā)生改變時它會被調(diào)用,但是money發(fā)生改變,他并不會調(diào)用
所以這里數(shù)組傳入是依賴項,只有數(shù)組中的狀態(tài)發(fā)生了變化,才會去觸發(fā)useEffect執(zhí)行

如果我們想在useEffect中進行請求,也就是只想它觸發(fā)一次,應(yīng)該怎么做呢:
如下使用空數(shù)組即可:

useEffect(() => {
        console.log('我被執(zhí)行了')
    }, [])

useEffect清除定時器

先來回顧一下在class組件中如何清除定時器:
如以下代碼,需要在componentWillUnmount生命周期函數(shù)中進行定時器的清除操作

export class App extends Component {
    state = {
        count: 0
    }
    componentDidMount() {
        this.timer = setInterval(() => {
            this.setState({count: this.state.count + 1})
        }, 500)
    }
    componentWillUnmount() {
        clearInterval(this.timer)
    }
    render() {
        return (
            <div>
                <h1>{this.state.count}</h1>
            </div>
        )
    }
}

那么使用useEffect該如何去實現(xiàn)呢?
只需要return出去就可以了,看下面代碼

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

export default function App() {
    const [state, setstate] = useState(0)
    useEffect(() => {
        const timer = setInterval(() => {
            setstate(prev => prev + 1)
        }, 1000)
        // 清除定時器
        return () => clearInterval(timer)
    }, [])
    return (
        <div>{state}</div>
    )
}

最后

本篇文章的講解就到這里啦,主要介紹了useEffect的功能以及使用方法,還有如何使用他清除定時器,如果對你有幫助,點贊關(guān)注支持下呀~后續(xù)還會給大家?guī)砀鄡?yōu)質(zhì)內(nèi)容

到此這篇關(guān)于React-Hook中useEffect詳解(使用useEffect清除定時器)的文章就介紹到這了,更多相關(guān)react Hook useEffect清除定時器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題

    react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題

    這篇文章主要介紹了react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React Agent 自定義實現(xiàn)代碼

    React Agent 自定義實現(xiàn)代碼

    在使用langchain的ReactAgent遇到問題后,作者嘗試自定義ReactAgent實現(xiàn),通過詳細(xì)分析langchain中的agent功能和問題,結(jié)合React思想,作者設(shè)計了新的agent邏輯并在GitHub上分享了代碼,新的ReactAgent通過改進prompt和工具調(diào)用邏輯,提升了任務(wù)執(zhí)行的效果和穩(wěn)定性
    2024-10-10
  • React Refs轉(zhuǎn)發(fā)實現(xiàn)流程詳解

    React Refs轉(zhuǎn)發(fā)實現(xiàn)流程詳解

    Refs是一個 獲取 DOM節(jié)點或React元素實例的工具,在React中Refs 提供了一種方式,允許用戶訪問DOM 節(jié)點或者在render方法中創(chuàng)建的React元素,這篇文章主要給大家介紹了關(guān)于React中refs的一些常見用法,需要的朋友可以參考下
    2022-12-12
  • react-router 路由切換動畫的實現(xiàn)示例

    react-router 路由切換動畫的實現(xiàn)示例

    這篇文章主要介紹了react-router 路由切換動畫的實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 淺談react受控組件與非受控組件(小結(jié))

    淺談react受控組件與非受控組件(小結(jié))

    本篇文章主要介紹了淺談react受控組件與非受控組件(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • React從Class方式轉(zhuǎn)Hooks詳解

    React從Class方式轉(zhuǎn)Hooks詳解

    這篇文章主要介紹了React從Class方式轉(zhuǎn)Hooks詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • react實現(xiàn)換膚功能的示例代碼

    react實現(xiàn)換膚功能的示例代碼

    這篇文章主要介紹了react實現(xiàn)換膚功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 淺談使用React.setState需要注意的三點

    淺談使用React.setState需要注意的三點

    本篇文章主要介紹了淺談使用React.setState需要注意的三點,提出了三點對 React 新手來說是很容易忽略的地方,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • React中實現(xiàn)使用條件渲染來顯示不同的內(nèi)容

    React中實現(xiàn)使用條件渲染來顯示不同的內(nèi)容

    在React中,條件渲染是根據(jù)不同的條件選擇性地渲染組件,本文介紹了三種常見的條件渲染方式:使用if語句、使用三元運算符和使用短路運算符,通過這些方法,我們可以根據(jù)應(yīng)用的狀態(tài)和用戶的操作動態(tài)地顯示不同的內(nèi)容,從而提升用戶體驗和組件的可維護性
    2025-02-02
  • 詳解在React項目中安裝并使用Less(用法總結(jié))

    詳解在React項目中安裝并使用Less(用法總結(jié))

    這篇文章主要介紹了詳解在React項目中安裝并使用Less(用法總結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論

南岸区| 迁安市| 大荔县| 宝丰县| 务川| 长宁区| 苍溪县| 杭锦后旗| 毕节市| 土默特左旗| 基隆市| 邯郸市| 鲜城| 樟树市| 三门峡市| 五指山市| 清水县| 西畴县| 泾源县| 泗阳县| 益阳市| 庐江县| 中阳县| 灵寿县| 洛川县| 陆丰市| 邓州市| 安远县| 尉氏县| 泽州县| 普安县| 高唐县| 宽城| 新竹市| 孝昌县| 望都县| 察雅县| 利津县| 同仁县| 明溪县| 内江市|