簡體   English   中英

React htmlFor - 點擊 label 關注輸入錯誤

[英]React htmlFor - clicking label focus on the wrong input

我有以下代碼:

const SomeComponent = () => {
return (
    <div>
            <label className={styles.label} htmlFor="firstName">
              First Name
            </label>
            <input type="text" id="firstName" value={user.firstName} />
          </div>
          <div>
            <label className={styles.label} htmlFor="lastName">
              Last Name
            </label>
            <input type="text" id="lastName" value={user.lastName} />
          </div>
          <div>
            <label className={styles.label} htmlFor="email">
              Email
            </label>
            <input type="email" id="email" value={user.email} />
          </div>);
    }

它在同一頁面上的多個位置呈現。 單擊中間元素的 label 始終會在第一個輸入上創建焦點,而不是在它附近的輸入上。

我如何確保 label 專注於正確的輸入(靠近它的那個,它在同一個組件中)而不是第一個(渲染的第一個SomeComponent )?

您必須確保 id 在整個頁面中是唯一的。 所以看起來你有幾個輸入使用 id email這就是頁面中的第一個輸入獲得焦點的原因。

解決它的一種方法是將id作為道具傳遞給組件。


const SomeComponent = ({id}) => {
  
  return (
    <div>
            <label className={styles.label} htmlFor={`firstName-${id}`}>
              First Name
            </label>
            <input type="text" id= {`firstName-${id}`} value={user.firstName} />
          </div>
          <div>
            <label className={styles.label} htmlFor= {`lastName-${id}`} >
              Last Name
            </label>
            <input type="text" id= {`lastName-${id}`} value={user.lastName} />
          </div>
          <div>
            <label className={styles.label} htmlFor= {`email-${id}`} >
              Email
            </label>
            <input type="email" id= {`email-${id}`} value={user.email} />
          </div>);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM