欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React中useRef的具體使用

 更新時間:2021年04月13日 10:37:38   作者:Meskjei  
這篇文章主要介紹了React中useRef的具體使用,它可以用來獲取組件實例對象或者是DOM對象,除此之外還有哪些用法,就一起來了解一下

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

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

首先來看一下它傳統(tǒng)的用法:

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創(chuàng)建了couterRef對象,并將其賦給了button的ref屬性。這樣,通過訪問couterRef.current就可以訪問到button對應(yīng)的DOM對象。

然后再來看看它保存數(shù)據(jù)的用法。

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

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

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,從而能正常清除定時器。

到此這篇關(guān)于React中useRef的具體使用的文章就介紹到這了,更多相關(guān)React useRef內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React報錯之Parameter event implicitly has an any type解決

    React報錯之Parameter event implicitly has a

    這篇文章主要為大家介紹了React報錯之Parameter event implicitly has an any type,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹

    React Hooks獲取數(shù)據(jù)實現(xiàn)方法介紹

    這篇文章主要介紹了react hooks獲取數(shù)據(jù),文中給大家介紹了useState dispatch函數(shù)如何與其使用的Function Component進行綁定,實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • React 源碼中的依賴注入方法

    React 源碼中的依賴注入方法

    這篇文章主要介紹了React 源碼中的依賴注入方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • react路由基礎(chǔ)解讀(Router、Link和Route)

    react路由基礎(chǔ)解讀(Router、Link和Route)

    這篇文章主要介紹了react路由基礎(chǔ)解讀(Router、Link和Route),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • React中使用setInterval函數(shù)的實例

    React中使用setInterval函數(shù)的實例

    這篇文章主要介紹了React中使用setInterval函數(shù)的實例,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • React實現(xiàn)多標簽在有限空間內(nèi)展示

    React實現(xiàn)多標簽在有限空間內(nèi)展示

    在業(yè)務(wù)中,需要在一個卡片組件中展示多個標簽,標簽組件高度相同,寬度和出現(xiàn)順序不同,要求標簽只能在有限的空間內(nèi)展示,所以本文給大家介紹了React實現(xiàn)多標簽在有限空間內(nèi)展示,需要的朋友可以參考下
    2023-12-12
  • create-react-app項目配置全解析

    create-react-app項目配置全解析

    這篇文章主要為大家介紹了create-react-app項目配置全解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 實例講解React 組件生命周期

    實例講解React 組件生命周期

    這篇文章主要介紹了React 組件生命周期的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 關(guān)于react useState更新異步問題

    關(guān)于react useState更新異步問題

    這篇文章主要介紹了關(guān)于react useState更新異步問題,具有很好的參考價值,希望對大家有所幫助。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

    2022-08-08
  • React?Refs?的使用forwardRef?源碼示例解析

    React?Refs?的使用forwardRef?源碼示例解析

    這篇文章主要為大家介紹了React?之?Refs?的使用和?forwardRef?的源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論