内部反应。 goal
我想对输入的输入进行消毒,以便用户无法输入不合理的字符。<Autocomplete>
Tl;dr
超越控制值
const Form = () => {
const sanitize = value => value.replace(/[^0-9:]/g, '')
const [value, setValue] = useState('')
return (
<>
<input type="text" value={value} onChange={(e) => { setValue(sanitize(e.target.value)) }} />
<Autocomplete
options={['12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00']}
value={value}
inputValue={value}
onChange={(_, value) => { setValue(sanitize(value || '')) }}
freeSolo
renderInput={(params) => (
<TextField {...params} label="Value" value={value} onChange={(e) => {
setValue(sanitize(e.target.value))
}} />
)}
/>
</>
)
}
组件具有可以控制的两个状态:
inputValue
/
value
道具组合的“价值”状态。该状态表示用户选择的值,例如在按Enter.时。
onChange
/道具组合的“输入值”状态。该状态表示文本框中显示的值。
inputValue
- 道,您不会通过输入字段的
solution当您需要控制和操纵输入字段的值时。您需要通过onInputChange
inputValue
道具来实现。删除该部分value