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 })