react useId

useId

useId 是 React 18 引入的一個內置 Hook,用于生成唯一且穩定的 ID

主要用于,解決在客戶端和服務器端渲染(SSR)時,動態生成 ID 可能導致的沖突問題;

特別適合用于,需要關聯 HTML 元素(如:


useId 的注意事項

  • 不要在循環或條件語句內調用:
    useId 必須在組件的頂層調用,否則可能導致不一致的 ID。

  • 不要用于 key 屬性(除非組合使用)
    useId 生成的 ID 通常較短,不適合直接作為 key(除非結合其他唯一值)。

  • 與 useRef 或 useState 不同:
    useId 不觸發重新渲染,也不存儲數據,僅用于生成唯一標識。


場景

  • <label htmlFor="input-id"> 和 <input id="input-id"> 的關聯

  • 在列表中為每個項生成唯一標識(如:key 屬性)

  • 在無障礙(a11y)場景下,需要唯一標識關聯元素

基本用法

import { useId } from 'react'function FormField() {const id = useId()  // 生成唯一 ID,如 ":r1:"return (<div><label htmlFor={id}> Username: </label><input id={id} type="text" /></div>)
}useId() 返回一個唯一的字符串(如 ":r1:"":r2:")。每次調用 useId() 都會生成一個新的唯一 ID。生成的 ID 在客戶端和服務器端一致,不會導致 hydration 錯誤。

關聯 label 和 input

function LoginForm() {const usernameId = useId()const passwordId = useId()return (<form><div><label htmlFor={usernameId}> Username: </label><input id={usernameId} type="text" /></div><div><label htmlFor={passwordId}> Password: </label><input id={passwordId} type="password" /></div></form>)
}

生成列表項的唯一 key

function TodoList({ items }) {return (<ul>{items.map((item) => {const id = useId()  // ? 錯誤!不能在循環內調用 useIdreturn <li key={id}> {item.text} </li>})}</ul>)
}`注意`:useId 不能 在'循環''條件語句內'調用,因為它依賴于 React 的渲染順序。
正確的做法是:function TodoList({ items }) {const baseId = useId()  // 在組件頂層調用return (<ul>{items.map((item, index) => (<li key={`${baseId}-${index}`}>{item.text}</li>))}</ul>)
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916695.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916695.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916695.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排水管網實時監測筑牢城市安全防線

排水管網的實時監測工作&#xff0c;強調其對于保障城市安全的重要作用。“排水管網”明確了具體的關注對象&#xff0c;它是城市基礎設施的重要組成部分&#xff0c;承擔著雨水、污水排放等關鍵功能。“實時監測”突出了監測的及時性和持續性&#xff0c;意味著能夠隨時獲取排…

SZU大學物理實驗報告|電位差計

寫在前面&#xff1a;博文里放圖片&#xff0c;主要省去了對文檔的排版時間&#xff0c;實驗還是要自己做的&#xff0c;反正都要去實驗室上課&#xff0c;順帶鍛煉下動手能力。有些結果是實驗手寫的&#xff0c;所以看不到&#xff0c;有結果的可以對下結果差的不太多就行&…

RoPE簡單解析

文章目錄簡介拆解一些tricks簡介 因為RoPE的優異性能&#xff0c;其已成為各種大模型中位置編碼的首選&#xff0c;包括多模態模型&#xff1b;在一些多模態模型或視頻理解模型中&#xff0c;甚至會用到多維度RoPE。雖然RoPE已廣泛應用&#xff0c;之前也看了不少針對其原理解…

windows 獲取 APK 文件的包名和啟動 Activity 名稱

使用 aapt 命令確保環境變量配置正確&#xff1a;首先需要確保你的系統環境變量中包含了 Android SDK 的 build-tools 目錄路徑。這是因為 aapt 工具位于該目錄下。運行命令&#xff1a; 打開命令提示符&#xff08;CMD&#xff09;&#xff0c;然后輸入以下命令來查看 APK 的詳…

【Mac版】Linux 入門命令行快捷鍵+聯想記憶

Linux Mac 用戶終端命令行快捷鍵 符號速查全解作為一個剛接觸 Linux 和終端的 macOS 用戶&#xff0c;常常被命令行的各種快捷鍵和符號弄得頭暈腦脹&#xff0c;本文將帶你系統地掌握命令行中最常用的快捷鍵和符號&#xff0c;并通過邏輯聯想幫助你輕松記住每一個組合。一、基…

AUTOSAR Mcal Dio - 模塊介紹 + EB配置工具介紹

文章目錄1. 模塊簡介2. 主要功能3. 縮略語4. API接口5. 功能介紹5.1. ChannelGroup5.2. Dio_MaskedWritePort6. 序列圖6.1.讀GPIO電平6.2. 設置GPIO電平7. EB 工具配置7.1.General7.2.DioPort8. 參考資料1. 模塊簡介 Dio&#xff0c;全稱“Digital Input Output”。Dio模塊&am…

ICT模擬零件測試方法--晶體管測試

ICT模擬零件測試方法–晶體管測試 文章目錄ICT模擬零件測試方法--晶體管測試晶體管測試晶體管測試配置晶體管測試配置晶體管測量選項晶體管測試 i3070 在線測試軟件為每個晶體管提供兩種測試&#xff1a; 使用二極管測試對晶體管的兩個 PN 結進行測試。這是檢查設備存在的快速…

AI算法實現解析-C++實例

基于C++實現的AI 以下是基于C++實現的AI/機器學習相關示例,涵蓋基礎算法、計算機視覺、自然語言處理等領域,適合不同階段的學習者參考: 基礎機器學習算法 線性回歸 使用梯度下降法預測連續值,核心公式: 損失函數: 邏輯回歸 二分類問題實現,Sigmoid函數: K-Means…

亞馬遜云科技實戰架構:構建可擴展、高效率、無服務器應用

對于今天的開發者、架構師和技術愛好者而言&#xff0c;云計算早已超越了簡單的“虛擬機租賃”或“服務器托管”階段。它已經演化為一套豐富、強大且精密的工具集&#xff0c;能夠以前所未有的方式設計、部署和擴展應用程序。真正的云原生思維&#xff0c;是掌握并運用多種架構…

論文閱讀:《無約束多目標優化的遺傳算法,群體和進化計算》

前言 提醒&#xff1a; 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布&#xff0c;其中引用內容都會使用鏈接表明出處&#xff08;如有侵權問題&#xff0c;請及時聯系&#xff09;。 其中內容多為一次書寫&#xff0c;缺少檢查與訂正&#xff0c;如有問題或其他拓展…

嵌入式單片機中位帶操作控制與實現

STM32 單片機的SRAM有兩個區支持位帶(bit-band)操作。 那么,什么是位帶,位帶操作的原理是怎樣的呢? 今天來梳理一下這個知識點。 在介紹位帶操作之前,先看一看 ARM Crotext-M3 的存儲器映射。 CM3 的地址空間是 4GB, 程序可以在代碼區,內部 SRAM 區以及外部 RAM 區中執…

考研初試專業分146!上岸新疆大學!信號與系統考研經驗,通信考研小馬哥。

信號與系統專業課分數146&#xff0c;希望以下的經驗能夠幫助到正在努力學習的學弟學妹們更好的學習專業課。本人是從四月份開始學習專業課&#xff0c;當時我覺得專業課應該要盡早開始越拖到后期學習壓力越大&#xff0c;所以在周邊同學還在只學習公共課的時候我就開始了專業課…

負載均衡算法中的加權隨機算法

import org.apache.commons.lang3.tuple.Pair;import java.util.Arrays; import java.util.List; import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors;/*** 加權隨機,nacos*/ public class RouterWeightRandom {/**** param list [{"a&q…

AI時代SEO關鍵詞優化策略

內容概要 在人工智能&#xff08;AI&#xff09;技術深度融入數字營銷的背景下&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;的關鍵詞優化策略正經歷一場智能變革&#xff0c;這不僅重塑了傳統研究方式&#xff0c;還為企業帶來了全新的競爭機遇。本文將從AI時代SEO的變…

復矩陣與共軛轉置矩陣乘積及其平方根矩陣

設 是一個 的復數矩陣&#xff0c;其共軛轉置矩陣&#xff08;Hermitian 共軛&#xff09;記為 &#xff08;即 &#xff09;&#xff0c;則矩陣 &#xff08; &#xff09;和 &#xff08; &#xff09;的性質如下文所述。1. Hermitian 性&#xff08;自共軛性&#x…

Vue 框架 學習筆記

作為初學者對于Vue框架的學習筆記 總結了Vue框架的核心知識點&#xff0c;包括&#xff1a;1. 基礎概念&#xff1a;漸進式框架、兩種使用方式、Vue實例創建流程、模板語法和響應式特性。2. 常用指令&#xff1a;詳細介紹了v-html、v-show/v-if、v-for、v-on、v-bind、v-model等…

飛牛系統安裝DataEase自定義Docker包

飛牛系統安裝DataEase自定義Docker包背景構造DataEase Docker包1.在Linux 系統中&#xff08;比如我這里選麒麟V10&#xff09;安裝Docker2.準備打包文件3.執行打包4.驗證打好的包上傳DataEase Docker包1.把本地docker 容器導出1.1查看鏡像列表命令&#xff1a;docker images1.…

可配置的PWM外設模塊

&#x1f527; 可配置的PWM外設模塊 基于FPGA的PWM信號發生器&#xff0c;支持 動態周期與占空比配置&#xff0c;無需外部控制信號&#xff0c;適用于 LED 呼吸燈、舵機控制、電機驅動等場景。 仿真波形 參數修改后會晚一個pwm周期才生效&#x1f4cc; 模塊功能 &#x1f9ee;…

從零到一:我是如何用深度學習打造高性能書籍推薦系統的

作者&#xff1a;笙囧同學 | 發布時間&#xff1a;2025年7月28日 | 閱讀時長&#xff1a;15分鐘 &#x1f3af; 前言&#xff1a;為什么要做這個項目&#xff1f; 大家好&#xff0c;我是笙囧同學&#xff01;最近在學習《機器學習基礎》課程時&#xff0c;被推薦系統的魅力深…

OpenRLHF:面向超大語言模型的高性能RLHF訓練框架

“四模型協同調度破資源壁壘&#xff0c;讓70B模型RLHF訓練觸手可及” OpenRLHF 是由 OpenLLMAI 團隊于2024年推出的開源強化學習人類反饋&#xff08;RLHF&#xff09;框架&#xff0c;旨在解決大語言模型&#xff08;LLM&#xff09;對齊訓練中的多模型協調瓶頸與超大規模擴展…