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

react?hooks頁(yè)面實(shí)時(shí)刷新方式(setInterval)

 更新時(shí)間:2024年03月12日 15:30:57   作者:一車(chē)雞蛋  
這篇文章主要介紹了react?hooks頁(yè)面實(shí)時(shí)刷新方式(setInterval),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1. 實(shí)現(xiàn)

頁(yè)面實(shí)時(shí)刷新一般用定時(shí)器(setInterval())實(shí)現(xiàn)。

  • 定時(shí)器:setInterval() - 每多少秒執(zhí)行一次指定的代碼。(執(zhí)行多次)
  • 延時(shí)器:setTimeout() - 多少秒以后執(zhí)行指定代碼。(執(zhí)行1次)

定時(shí)器與延時(shí)器均為異步程序,放在異步隊(duì)列里執(zhí)行!

2. 注意點(diǎn)

  • 1.  頁(yè)面使用定時(shí)器一定要記得清除。
  • 2.  useEffect 的數(shù)組依賴不要忘記,不然只執(zhí)行一次。
  • 3.  也可以使用useRef(為了避免setInterval變量形成閉包)

方式一:使用數(shù)組依賴

function Index() {
  const [count, setCount] = useState(0);
 
  useEffect(() => {
    const timer = setInterval(() => {
    
    //可以調(diào)接口
    //可以存state,如setCount(count + 1)
    //可以調(diào)其他函數(shù)
 
    }, 1000);
    return () => clearInterval(timer);  //清除定時(shí)器不要忘記
  }, [count]);  //數(shù)組依賴不要忘記
 
  return <div>{count}</div>;
}

方式二:使用useRef

function Index() {
  const savecallback=useRef(null); //為了避免形成閉包
  function callback(){
    // 可以調(diào)其他函數(shù)
    // 可以調(diào)接口
  }
 
  /*每當(dāng)組件被重新渲染,useEffect 都會(huì)將最新的回調(diào)函數(shù)賦值給 ref.current,接著 ref.current會(huì)被放到 setInterval 里去執(zhí)行。所以 setInterval 雖只在組件初始化時(shí)被啟動(dòng)了一次,但它在執(zhí)行每次定時(shí)任務(wù)時(shí),使用的都是最新的回調(diào)函數(shù)?;卣{(diào)函數(shù)不再被困于閉包當(dāng)中,最新的 state、props 自然能夠被取到。*/
  
  useEffect(() => {
    (savecallback as any).current = callback;
  });
 
  useEffect(() => {
    const timer = setInterval(() => {
      (savecallback as any).current();
    }, 1000);
    return () => clearInterval(timer);
  }, []);
 
  return <div>頁(yè)面</div>;
}

方式三:使用useReducer 狀態(tài)管理 

(對(duì)于定時(shí)更新某個(gè)變量更友好,定時(shí)調(diào)接口的話還是上邊兩種更方便一點(diǎn))

const intitstate= {count: 0};
 
function reducer(state = 0,action) {
  return {count: state.count + 1};
}
 
export default function Index() {
  const [state, dispatch] = useReducer(reducer,intitstate);
 
  useEffect(() => {
    setInterval(() => {
      dispatch();
    }, 1000);
  }, []);
 
  return <div>{state.count}</div>;
}

因?yàn)殚]包的原因,回調(diào)函數(shù)無(wú)法取到最新的 state,而大多數(shù)場(chǎng)景下我們更新 state 前又必須先獲取 state 的當(dāng)前值。

那如何才能夠在不讀取最新 state 的前提下,對(duì) state 進(jìn)行增量更新,可以用useReducer 狀態(tài)管理。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • React實(shí)現(xiàn)評(píng)論的添加和刪除

    React實(shí)現(xiàn)評(píng)論的添加和刪除

    這篇文章主要為大家詳細(xì)介紹了React實(shí)現(xiàn)評(píng)論的添加和刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 實(shí)例講解React 組件生命周期

    實(shí)例講解React 組件生命周期

    這篇文章主要介紹了React 組件生命周期的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • React中實(shí)現(xiàn)插槽效果的方案詳解

    React中實(shí)現(xiàn)插槽效果的方案詳解

    在React中是沒(méi)有插槽的概念的, 或者說(shuō)在React中是不需要插槽的, 因?yàn)镽eact對(duì)于這種需要插槽的情況非常靈活,本文給大家分享兩種方案實(shí)現(xiàn),分別是children實(shí)現(xiàn)插槽和props實(shí)現(xiàn)插槽,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-09-09
  • 詳解前端路由實(shí)現(xiàn)與react-router使用姿勢(shì)

    詳解前端路由實(shí)現(xiàn)與react-router使用姿勢(shì)

    本篇文章主要介紹了詳解前端路由和react-router使用姿勢(shì),詳細(xì)的介紹了react-router的用法,有興趣的可以了解一下
    2017-08-08
  • React中狀態(tài)設(shè)置this.setState()的實(shí)現(xiàn)

    React中狀態(tài)設(shè)置this.setState()的實(shí)現(xiàn)

    本文對(duì)比了React中類組件和函數(shù)組件的狀態(tài)管理方式,前者合并更新,后者替換更新,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • 比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解

    比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解

    這篇文章主要為大家介紹了比ant更豐富Modal組件功能實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React Native自定義控件底部抽屜菜單的示例

    React Native自定義控件底部抽屜菜單的示例

    本篇文章主要介紹了React Native自定義控件底部抽屜菜單的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn)

    React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn)

    這篇文章主要介紹了React中獲取數(shù)據(jù)的3種方法及優(yōu)缺點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 一文詳解手動(dòng)實(shí)現(xiàn)Recoil狀態(tài)管理基本原理

    一文詳解手動(dòng)實(shí)現(xiàn)Recoil狀態(tài)管理基本原理

    這篇文章主要為大家介紹了一文詳解手動(dòng)實(shí)現(xiàn)Recoil狀態(tài)管理基本原理實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 基于React Native 0.52實(shí)現(xiàn)輪播圖效果

    基于React Native 0.52實(shí)現(xiàn)輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了基于React Native 0.52實(shí)現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評(píng)論

西充县| 华宁县| 海南省| 彝良县| 孟津县| 齐河县| 灵川县| 黄冈市| 象山县| 西平县| 贡觉县| 聂拉木县| 焦作市| 博乐市| 光山县| 桃江县| 三原县| 开远市| 西林县| 叶城县| 南投市| 通城县| 克东县| 旬阳县| 沂水县| 湖北省| 多伦县| 盐池县| 迁安市| 冷水江市| 晋江市| 商洛市| 盘锦市| 民县| 鄂托克旗| 南开区| 凤冈县| 长丰县| 三门峡市| 靖边县| 库车县|