国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3.react useRef使用與常見問題

這篇具有很好參考價值的文章主要介紹了3.react useRef使用與常見問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

react useRef使用與常見問題

1. Dom操作: useRef()

    // 1. Dom操作: useRef()
    let app = document.querySelector('#app');
    let root = ReactDOM.createRoot(app);
    let { useState, useEffect, useRef } = React;
    
    let Welcome = (props) => {
      const myRef = useRef()

      const handleClick = () =>{
        myRef.current.focus()
      }
  
      return (
        <div>
          <button onClick={handleClick}>點擊</button>
          <input ref={myRef} type='text' />
        </div>
      );
    }
    
    let element = (
      <Welcome />
    );
    root.render(element);

2. 函數(shù)組件的轉(zhuǎn)發(fā): React.forwardRef()

      // 2. 函數(shù)組件的轉(zhuǎn)發(fā): React.forwardRef()
    let app = document.querySelector('#app');
    let root = ReactDOM.createRoot(app);
    let { useState, useEffect, useRef, forwardRef } = React;
    
    let Head = forwardRef((props, ref)=> {
      return (
        <div>
          hello Head
          {/*將 ref 轉(zhuǎn)發(fā)到子組件的input上 */}
          <input ref={ref} type='text' />
      </div>
      )
    })

    let Welcome = (props) => {
      const myRef = useRef()

      const handleClick = () =>{
        // 點擊時候會觸發(fā)子組件的focus事件
        myRef.current.focus()
      }
  
      return (
        <div>
          <button onClick={handleClick}>點擊</button>
          {/*ref 和組件關(guān)聯(lián)*/}
          <Head ref={myRef}></Head>
        </div>
      );
    }
    
    let element = (
      <Welcome />
    );
    root.render(element);

3. 對普通值進行記憶, 類似于一個class的實例屬性

 // 3. 對普通值進行記憶, 類似于一個class的實例屬性
    let app = document.querySelector('#app');
    let root = ReactDOM.createRoot(app);
    let { useState, useEffect, useRef } = React;
    

    let Welcome = (props) => {
      // 響應(yīng)式數(shù)據(jù),具有記憶功能,點擊后響應(yīng)式數(shù)據(jù)加1
      const [num, setNum] = useState(0);

      // let count = 0; // 普通的count不具有記憶功能
      const count = useRef(0) // 可以給普通值進行記憶操作

      const handleClick = () =>{
        count.current++;
        console.log(count.current);
        
        setNum(num + 1)

        // console.log(num); // 還是之前的值

      }
  
      return (
        <div>
          <button onClick={handleClick}>點擊</button>
        
        </div>
      );
    }
    
    let element = (
      <Welcome />
    );
    root.render(element);

4. 結(jié)合useEffect,只在更新時觸發(fā)

 // 4. 結(jié)合useEffect,只在更新時觸發(fā)
    let app = document.querySelector('#app');
    let root = ReactDOM.createRoot(app);
    let { useState, useEffect, useRef } = React;
    

    let Welcome = (props) => {
      // 響應(yīng)式數(shù)據(jù),具有記憶功能,點擊后響應(yīng)式數(shù)據(jù)加1
      const [num, setNum] = useState(0);

      const isUpdate = useRef(false) 

      useEffect(()=>{// 只在點擊時候觸發(fā)
       if (isUpdate.current) {
        console.log(num);
       }
      })

      const handleClick = () =>{
        setNum(num + 1)
        isUpdate.current = true

        // console.log(num); // 還是之前的值

      }
  
      return (
        <div>
          <button onClick={handleClick}>點擊</button>
        
        </div>
      );
    }
    
    let element = (
      <Welcome />
    );
    root.render(element);

FAQ

https://zh-hans.legacy.reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function文章來源地址http://www.zghlxwxcb.cn/news/detail-655254.html

到了這里,關(guān)于3.react useRef使用與常見問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 7.react useCallback與useMemo函數(shù)使用與常見問題

    useCallback返回一個 可記憶的函數(shù) ,useMemo返回一個 可記憶的值 ,useCallback只是useMemo的一種特殊形式。 那么這到底是什么意思呢?實際上我們在父子通信的時候,有可能傳遞的值是一樣的,但是傳遞的內(nèi)存地址可能是不一樣的,那么在React眼里是會對組件進行重新執(zhí)行的。 1

    2024年02月15日
    瀏覽(16)
  • 23個react常見問題

    23個react常見問題

    1、setState 是異步還是同步? 合成事件中是異步 鉤子函數(shù)中的是異步 原生事件中是同步 setTimeout中是同步 相關(guān)鏈接:你真的理解setState嗎?: 2、聊聊 react@16.4 + 的生命周期 圖片 相關(guān)連接:React 生命周期 我對 React v16.4 生命周期的理解 3、useEffect(fn, []) 和 componentDidMount 有什么

    2024年02月09日
    瀏覽(11)
  • 實際開發(fā)中,React應(yīng)用常見問題【持續(xù)更新中】

    實際開發(fā)中,React應(yīng)用常見問題【持續(xù)更新中】 “react-router-dom”: “^6.14.2”, “react”: “^18.2.0”, 1、監(jiān)聽路由 2、路由編程式導(dǎo)航 useNavigate() 3、路由鏈接導(dǎo)航

    2024年02月15日
    瀏覽(27)
  • React hook 10種常見 Hook

    React官網(wǎng)是這么介紹的: Hook 是 React 16.8 的新增特性。它可以讓你在不編寫 class 的情況下使用 state 以及其他的 React 特性。 完全可選的 你無需重寫任何已有代碼就可以在一些組件中嘗試 Hook。但是如果你不想,你不必現(xiàn)在就去學(xué)習(xí)或使用 Hook。 100% 向后兼容的 Hook 不包含任何

    2024年02月10日
    瀏覽(22)
  • React鉤子函數(shù)之useRef的基本使用

    React鉤子函數(shù)中的useRef是一個非常有用的工具,它可以用來獲取DOM元素或者保存一些變量。在這篇文章中,我們將會討論useRef的基本使用。 首先,我們需要知道useRef是如何工作的。它返回一個可變的ref對象,這個對象可以在組件的整個生命周期中被訪問。當我們需要獲取DOM元

    2024年02月10日
    瀏覽(19)
  • React 使用 useRef() 獲取循環(huán)中所有子組件實例

    React 使用 useRef() 獲取循環(huán)中所有子組件實例

    之前項目中使用了 antd pro 中的 可編輯表格 (EditableProTable) ,在頁面中表格要經(jīng)過多層遍歷后組成的新頁面,所以我將之抽成了一個公用的組件,另外在遍歷的最外層需要通過一個按鈕統(tǒng)一提交表格數(shù)據(jù),但是提交數(shù)據(jù)之前需要對每一個表格進行非空校驗。 遍歷中引入組件這

    2024年02月11日
    瀏覽(51)
  • [React]常見Hook實現(xiàn)之useUpdateLayoutEffect

    useUpdateLayoutEffect 是一個自定義的React Hook,它與 useUpdateEffect 類似,都是用來在組件更新時執(zhí)行副作用函數(shù)。不同的是, useUpdateLayoutEffect 使用的是 useLayoutEffect 來注冊副作用函數(shù)。 useLayoutEffect 與 useEffect 類似,都是用來注冊副作用函數(shù)的Hook函數(shù),不同的是, useLayoutEffect 是在

    2024年02月15日
    瀏覽(12)
  • react hooks 中使用 addEventListener 監(jiān)聽事件無法訪問到最新的 state 的問題

    如上述代碼所示,props.asyncData 變化之后 hasAsyncData 設(shè)置為 true,然后滾動頁面,handleMove 中的 hasAsyncData 仍然為初始值 false。 所以這時要在 hasAsyncData 變化后 ,重新綁定 addEventListener 事件 useEffect(() = { ? }, [hasAsyncData]) 在useEffect中將他監(jiān)聽起來,從新綁定

    2024年01月21日
    瀏覽(20)
  • 關(guān)于在微信小程序中使用taro + react-hook后銷毀函數(shù)無法執(zhí)行的問題

    關(guān)于在微信小程序中使用taro + react-hook后銷毀函數(shù)無法執(zhí)行的問題

    問題: 在 taro中使用navigageTo() 跳轉(zhuǎn)路由后hook中useEffect 的return函數(shù)沒有執(zhí)行 沒有執(zhí)行return函數(shù) 框架版本: ?????tarojs:? 3.6? ? ????????????????????????react:? ?18.0? ? 原因: 使用navigateTo() 跳轉(zhuǎn)路由的話并不會銷毀頁面和組件,會加入一個最大數(shù)量為十層的路由

    2024年01月24日
    瀏覽(30)
  • react hook問題記錄(持續(xù)更新)

    實際使用react hook的時候遇到的一些問題記錄下來了,溫故而知新。 例子1:界面上有個按鈕,點擊按鈕界面上數(shù)值會增加1和2 但是實際的結(jié)果是: 點擊按鈕,界面展示的是 0,2。跟預(yù)期需要展示的0,1,2不一樣 例子2:點擊按鈕,執(zhí)行三次setState,希望加3 但是實際的結(jié)果是:

    2024年01月15日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包