一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - React - React中useRef的具體使用

React中useRef的具體使用

2022-02-28 16:42Meskjei React

這篇文章主要介紹了React中useRef的具體使用,它可以用來獲取組件實例對象或者是DOM對象,除此之外還有哪些用法,就一起來了解一下

相信有過React使用經驗的人對ref都會熟悉,它可以用來獲取組件實例對象或者是DOM對象。

而useRef這個hooks函數,除了傳統的用法之外,它還可以“跨渲染周期”保存數據。

首先來看一下它傳統的用法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import React, { useState, useEffect, useMemo, useRef } from 'react';
 
export default function App(props){
  const [count, setCount] = useState(0);
 
  const doubleCount = useMemo(() => {
    return 2 * count;
  }, [count]);
 
  const couterRef = useRef();
 
  useEffect(() => {
    document.title = `The value is ${count}`;
    console.log(couterRef.current);
  }, [count]);
  
  return (
    <>
      <button ref={couterRef} onClick={() => {setCount(count + 1)}}>Count: {count}, double: {doubleCount}</button>
    </>
  );
}

代碼中用useRef創建了couterRef對象,并將其賦給了button的ref屬性。這樣,通過訪問couterRef.current就可以訪問到button對應的DOM對象。

然后再來看看它保存數據的用法。

在一個組件中有什么東西可以跨渲染周期,也就是在組件被多次渲染之后依舊不變的屬性?第一個想到的應該是state。沒錯,一個組件的state可以在多次渲染之后依舊不變。但是,state的問題在于一旦修改了它就會造成組件的重新渲染。

那么這個時候就可以使用useRef來跨越渲染周期存儲數據,而且對它修改也不會引起組件渲染。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import React, { useState, useEffect, useMemo, useRef } from 'react';
 
export default function App(props){
  const [count, setCount] = useState(0);
 
  const doubleCount = useMemo(() => {
    return 2 * count;
  }, [count]);
 
  const timerID = useRef();
  
  useEffect(() => {
    timerID.current = setInterval(()=>{
        setCount(count => count + 1);
    }, 1000);
  }, []);
  
  useEffect(()=>{
      if(count > 10){
          clearInterval(timerID.current);
      }
  });
  
  return (
    <>
      <button ref={couterRef} onClick={() => {setCount(count + 1)}}>Count: {count}, double: {doubleCount}</button>
    </>
  );
}

在上面的例子中,我用ref對象的current屬性來存儲定時器的ID,這樣便可以在多次渲染之后依舊保存定時器ID,從而能正常清除定時器。

到此這篇關于React中useRef的具體使用的文章就介紹到這了,更多相關React useRef內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/hjc256/article/details/102587037

延伸 · 閱讀

精彩推薦
  • Reactreact獲取input輸入框的值的方法示例

    react獲取input輸入框的值的方法示例

    這篇文章主要介紹了react獲取input輸入框的值的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    Pinkh8082022-02-24
  • ReactReact+Ant Design開發環境搭建的實現步驟

    React+Ant Design開發環境搭建的實現步驟

    這篇文章主要介紹了React+Ant Design開發環境搭建的實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋...

    qq_3341488311802022-02-24
  • Reactreact diff算法源碼解析

    react diff算法源碼解析

    這篇文章主要介紹了react diff算法源碼解析的相關資料,幫助大家更好的理解和學習使用react,感興趣的朋友可以了解下...

    zhangyu5572022-02-27
  • React詳解React 父組件和子組件的數據傳輸

    詳解React 父組件和子組件的數據傳輸

    這篇文章主要介紹了React 父組件和子組件的數據傳輸的相關資料,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下...

    拾階求上11812022-02-28
  • ReactReact服務端渲染原理解析與實踐

    React服務端渲染原理解析與實踐

    這篇文章主要介紹了React服務端渲染原理解析與實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們...

    隱冬7992022-02-10
  • React一文幫你理解PReact10.5.13源碼

    一文幫你理解PReact10.5.13源碼

    這篇文章主要介紹了一文幫你理解PReact10.5.13源碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    我的小樹林5432022-02-22
  • React編寫簡潔React組件的小技巧

    編寫簡潔React組件的小技巧

    這篇文章主要介紹了編寫簡潔React組件的小技巧,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下...

    KooFE前端團隊7572022-02-25
  • ReactReact實現一個高度自適應的虛擬列表

    React實現一個高度自適應的虛擬列表

    這篇文章主要介紹了React如何實現一個高度自適應的虛擬列表,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下...

    抖音前端安全8912022-02-25
主站蜘蛛池模板: 日韩欧美中文字幕一区二区三区 | 无人区尖叫之夜美女姐姐视频 | 婷婷久久综合九色综合九七 | 九9热这里真品 | 4hc44四虎永久地址链接 | 为什么丈夫插我我却喜欢被打着插 | 男gaygays免费网站多人 | 精品国产品香蕉在线观看 | 视频高清在线观看 | 99资源站| 欧美18一19性高清hd4k | 免费抽搐一进一出印度 | 国产性tv国产精品 | 美女国内精品自产拍在线播放 | 惩罚狠h调教灌满 | 福利视频一区青娱 | 久久精品中文字幕 | 欧美在线视频免费播放 | 特黄特色大片免费视频播放 | 色综色天天综合网 | 精品免费视在线视频观看 | 美女被灌浣肠失禁视频 | 1769在线视频 | 日韩首页 | 无码AV精品一区二区三区 | 免费成年网 | 国产日韩欧美在线一二三四 | 10个免费货源网站 | 男女羞羞的视频 | 四虎免费影院4hu永久免费 | ipx358cn出差被男上司在线 | 亚洲一区二区精品视频 | 四虎影剧院 | gay中国 | 国产精品亚洲午夜一区二区三区 | np小说h | 亚洲福利视频一区 | 亚洲AV 中文字幕 国产 欧美 | 国产草草 | 校园纯肉H教室第一次 | 日韩免费观看成第15集 |