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

React報錯Function?components?cannot?have?string?refs

 更新時間:2022年12月16日 08:43:38   作者:chuck  
這篇文章主要為大家介紹了React報錯Function?components?cannot?have?string?refs解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

總覽

當我們在一個函數(shù)組件中使用一個字符串作為ref時,會產(chǎn)生"Function components cannot have string refs"錯誤。為了解決該錯誤,使用useRef()鉤子來得到一個可變的ref對象,這樣你就可以在組件中作為ref使用。

這里有個示例用來展示錯誤是如何發(fā)生的。

// App.js
export default function App() {
  // A string ref has been found within a strict mode tree.
  // ?? Function components cannot have string refs.
  // We recommend using useRef() instead.
  return (
    <div>
      <input type="text" id="message" ref="msg" />
    </div>
  );
}

上述代碼片段的問題在于,我們使用了字符串作為ref。

useRef

為了解決該錯誤,使用useRef鉤子來獲取可變的ref對象。

// App.js
import {useEffect, useRef} from 'react';
export default function App() {
  const refContainer = useRef(null);
  useEffect(() => {
    // ??? this is reference to input element
    console.log(refContainer.current);
    refContainer.current.focus();
  }, []);
  return (
    <div>
      <input type="text" id="message" ref={refContainer} />
    </div>
  );
}

useRef()鉤子可以被傳遞一個初始值作為參數(shù)。該鉤子返回一個可變的ref對象,其.current屬性被初始化為傳遞的參數(shù)。

需要注意的是,我們必須訪問ref對象上的current屬性,以獲得對我們設置了ref屬性的input元素的訪問。

當我們傳遞ref屬性到元素上時,比如說,<input ref={myRef} /> 。React將ref對象上的.current屬性設置為相應的DOM節(jié)點。

useRef鉤子創(chuàng)建了一個普通的JavaScript對象,但在每次渲染時都給你相同的ref對象。換句話說,它幾乎是一個帶有.current屬性的記憶化對象值。

不會重新渲染

應該注意的是,當你改變refcurrent屬性的值時,不會引起重新渲染。

例如,一個ref不需要包含在useEffect鉤子的依賴數(shù)組中,因為改變它的current屬性不會引起重新渲染。

// App.js
import {useEffect, useRef} from 'react';
export default function App() {
  const refContainer = useRef(null);
  const refCounter = useRef(0);
  useEffect(() => {
    // ??? this is reference to input element
    console.log(refContainer.current);
    refContainer.current.focus();
    // ??? incrementing ref value does not cause re-render
    refCounter.current += 1;
    console.log(refCounter.current);
  }, []);
  return (
    <div>
      <input type="text" id="message" ref={refContainer} />
    </div>
  );
}

例子中的useEffect鉤子只運行了2次,因為useRef在其內(nèi)容發(fā)生變化時并沒有通知我們。

改變對象的current屬性并不會導致重新渲染。

以上就是React報錯Function components cannot have string refs的詳細內(nèi)容,更多關于React報錯Function components cannot have string refs的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解基于webpack搭建react運行環(huán)境

    詳解基于webpack搭建react運行環(huán)境

    本篇文章主要介紹了詳解基于webpack搭建react運行環(huán)境,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • React使用Props實現(xiàn)父組件向子組件傳值

    React使用Props實現(xiàn)父組件向子組件傳值

    在React中,組件之間的數(shù)據(jù)傳遞通常是通過屬性(Props)來實現(xiàn)的,父組件可以通過屬性向子組件傳遞數(shù)據(jù),這是React組件通信的基礎模式之一,本文將探討如何使用Props來實現(xiàn)父組件向子組件傳遞數(shù)據(jù),需要的朋友可以參考下
    2025-04-04
  • React?Hook實現(xiàn)對話框組件

    React?Hook實現(xiàn)對話框組件

    這篇文章主要為大家詳細介紹了React?Hook實現(xiàn)對話框組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React使用Electron開發(fā)桌面端的詳細流程步驟

    React使用Electron開發(fā)桌面端的詳細流程步驟

    React是一個流行的JavaScript庫,用于構建Web應用程序,結合Electron框架,可以輕松地將React應用程序打包為桌面應用程序,本文詳細介紹了使用React和Electron開發(fā)桌面應用程序的步驟,需要的朋友可以參考下
    2023-06-06
  • React使用redux基礎操作詳解

    React使用redux基礎操作詳解

    這篇文章主要介紹了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當中去,本文給大家詳細講解,需要的朋友可以參考下
    2023-01-01
  • React中setState是同步的還是異步的

    React中setState是同步的還是異步的

    這篇文章主要介紹了React中setState是同步的還是異步的,這是一個經(jīng)典的 React 面試題,但答案并不是簡單的“同步”或“異步”,需要分情況討論,下面就來詳細的介紹一下
    2026-06-06
  • React大文件分片上傳原理及方案

    React大文件分片上傳原理及方案

    前端進行大文件分片上傳的方案幾乎都是利用Blob.prototype.slice方法對文件進行分片,用數(shù)組將每一個分片存起來,最后將分片發(fā)給后端,本文給大家介紹React大文件分片上傳方案,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • React創(chuàng)建對話框組件的方法實例

    React創(chuàng)建對話框組件的方法實例

    在項目開發(fā)過程中,對于復雜的業(yè)務選擇功能很常見,下面這篇文章主要給大家介紹了關于React創(chuàng)建對話框組件的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • React Fragment介紹與使用詳解

    React Fragment介紹與使用詳解

    本文主要介紹了React Fragment介紹與使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • react實現(xiàn)動態(tài)增減表單項的示例代碼

    react實現(xiàn)動態(tài)增減表單項的示例代碼

    在做項目的時候,甲方給的信息有限,網(wǎng)頁的備案信息寫成固定的,之后驗收的時候,甲方要求把這個備案信息寫成動態(tài)的,可以自增減,下面通過實例代碼給大家介紹react實現(xiàn)動態(tài)增減表單項的示例,感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評論

横山县| 界首市| 广水市| 沙雅县| 江油市| 松滋市| 阿合奇县| 普宁市| 翁源县| 江都市| 德庆县| 三河市| 抚松县| 武鸣县| 竹溪县| 敦煌市| 松阳县| 抚顺市| 开化县| 北海市| 雷波县| 榆树市| 屏南县| 公安县| 垫江县| 晋州市| 曲周县| 依兰县| 河曲县| 亚东县| 阳高县| 云阳县| 钟山县| 宁明县| 湘潭县| 怀宁县| 土默特左旗| 韩城市| 松溪县| 西丰县| 二连浩特市|