react-vite-demo

react and vite demo

git clone https://9o.is/git/react-vite-demo.git

ComboBox.tsx

(584B)


      1 import { useId, memo } from "react"
      2 
      3 export type ComboBoxProps = {
      4     label: string
      5     name: string
      6     options: string[]
      7   }
      8   
      9 export const ComboBox = memo(({ label, name, options }: ComboBoxProps) => {
     10     const inputId = useId()
     11     const datalistId = useId()
     12 
     13     return (
     14         <>
     15             <label htmlFor={inputId}>{label}</label>
     16             <input id={inputId} name={name} type="text" list={datalistId} />
     17             <datalist id={datalistId}>
     18                 {options.map(option => <option key={option} value={option} />)}
     19             </datalist>
     20         </>
     21     )
     22 })