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

react中hooks使用useState的更新不觸發(fā)dom更新問題及解決

 更新時間:2024年01月03日 09:20:55   作者:夜空孤狼嘯  
這篇文章主要介紹了react中hooks使用useState的更新不觸發(fā)dom更新問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題

  const [tableData, setTableData] = useState([{ key: '1' }])

  const newAddField = () => {
    tableData.push({
      key: `${fieldNum + 1}`
    })
    setFieldNum(fieldNum + 1)
    // 這種方法并不會更新dom節(jié)點
    setTableData(tableData)

  }

這種方法,雖然更新的useState,但是dom節(jié)點并不會更新

原因

在 Hook 中直接修改 state 的一個對象(或數(shù)組)屬性的某個子屬性或值,然后直接進行 set,不會觸發(fā)重新渲染。

對 Class Component來說,state 是 Immutable 的,setState 后一定會生成一個全新的 state 引用。

它是通過 this.state 方式讀取 state,所以每次代碼執(zhí)行都會拿到最新的 state 引用。

對 Hook Function Component 而言,useState 產(chǎn)生的數(shù)據(jù)也是 Immutable 的,通過數(shù)組第二個參數(shù) Set 一個新值后,原來的值會形成一個新的引用在下次渲染時。

解決方法

通過擴展運算符改變引用地址

  const [tableData, setTableData] = useState([{ key: '1' }])

  const newAddField = () => {
    tableData.push({
      key: `${fieldNum + 1}`
    })
    setFieldNum(fieldNum + 1)
    // 這種方法并不會更新dom節(jié)點
    // setTableData(tableData)
    // 通過擴展運算符實現(xiàn)深拷貝
    setTableData([...tableData])

  }

總結

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

相關文章

  • React Native中NavigatorIOS組件的簡單使用詳解

    React Native中NavigatorIOS組件的簡單使用詳解

    這篇文章主要介紹了React Native中NavigatorIOS組件的簡單使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • React中useMemo、useCallback的具體使用

    React中useMemo、useCallback的具體使用

    useMemo和useCallback是React中用于緩存計算結果和函數(shù)的Hooks,本文就來介紹一下useMemo、useCallback的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • React+Koa實現(xiàn)文件上傳的示例

    React+Koa實現(xiàn)文件上傳的示例

    這篇文章主要介紹了React+Koa實現(xiàn)文件上傳的示例,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下
    2021-04-04
  • 一文帶你了解React中的函數(shù)組件

    一文帶你了解React中的函數(shù)組件

    函數(shù)式組件的基本意義就是,組件實際上是一個函數(shù),不是類,下面這篇文章主要給大家介紹了關于React中函數(shù)組件的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • react腳手架配置代理的實現(xiàn)

    react腳手架配置代理的實現(xiàn)

    本文主要介紹了react腳手架配置代理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • React?Context詳解使用方法

    React?Context詳解使用方法

    Context提供了一個無需為每層組件手動添加props,就能在組件樹間進行數(shù)據(jù)傳遞的方法。在一個典型的?React?應用中,數(shù)據(jù)是通過props屬性自上而下(由父及子)進行傳遞的,但這種做法對于某些類型的屬性而言是極其繁瑣的
    2022-12-12
  • React?之?Suspense提出的背景及使用詳解

    React?之?Suspense提出的背景及使用詳解

    這篇文章主要為大家介紹了React?之?Suspense提出的背景及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • React文字展開收起組件的實現(xiàn)示例

    React文字展開收起組件的實現(xiàn)示例

    本文主要介紹了React文字展開收起組件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • react?事項懶加載的三種方法及使用場景

    react?事項懶加載的三種方法及使用場景

    這篇文章主要介紹了react?事項懶加載的三種方法及使用場景,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • React利用路由實現(xiàn)登錄界面的跳轉(zhuǎn)

    React利用路由實現(xiàn)登錄界面的跳轉(zhuǎn)

    這篇文章主要介紹了React利用路由實現(xiàn)登錄界面的跳轉(zhuǎn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論

商洛市| 西乌| 普兰店市| 怀安县| 阿坝| 明溪县| 龙井市| 镇巴县| 潮安县| 南昌县| 沙田区| 林西县| 永昌县| 乌兰察布市| 亳州市| 都江堰市| 盖州市| 唐河县| 淳化县| 肥乡县| 两当县| 河曲县| 辉南县| 侯马市| 黄陵县| 格尔木市| 禹州市| 洛隆县| 肇源县| 哈密市| 呼伦贝尔市| 英山县| 陇川县| 稻城县| 旺苍县| 罗源县| 齐河县| 扎鲁特旗| 称多县| 汶川县| 桦甸市|