javascript - 设置值时会打开 Material UI Autocomplete 免费单独菜单
问题描述
您好,我在尝试从状态设置自动完成值时遇到自动完成问题。所以 onInput 更改我在状态中设置新值并传递与自动完成值相同的值。
出于某种原因,当我停止输入带有项目的菜单时,即使输入的单词完全不同,它也会为我提供包含所有选项的菜单。
问题与如何在自动完成组件中设置值有关,当我从状态中删除设置值时,一切都按预期工作。
这是我的自动完成组件。
从'react'导入反应导入{TextField}从'@material-ui/core'导入{自动完成}从'@material-ui/lab'
function AutocompleteFreeSolo({
label = '',
onInputChange = (_ = {}) => { },
searchOptions = [],
value = '',
error = false,
helperText = '',
dataCy = ''
}) {
return (
<Autocomplete
freeSolo
options={searchOptions.map((option) => option.name)}
onInputChange={onInputChange}
data-cy={dataCy}
renderInput={params => (<TextField {...params} variant="outlined" label={label} error={error} helperText={helperText}/>)}
value={value}
/>
)
}
export default AutocompleteFreeSolo
这里被调用
<DialogFormControlLabel
control={<ChronoAutocompleteFreeSolo
searchOptions={Object.entries(senderList).map(([key, _]) => ({
name: senderList[key].email
}))}
dataCy={'reply_to'}
error={replyToFieldError}
helperText={replyToFieldError ? t('Invalid Email') : ''}
onInputChange={(_, v) => debounceRequest(v)
}
value={replyTo}
/>}
required
label={ t('Reply To Address') }
/>
所以在输入变化时触发 debounceRequest
const request = debounce(value => {
**setStateValue(value)**
}, 1000)
const debounceRequest = React.useCallback(value => request(value), [])
我不知道这与去抖动有关还是我以错误的方式设置值?
解决方案
推荐阅读
- javascript - 使用 Ajax 将 Json 数据添加到表中而不刷新 MVC 中的页面?
- python - 如何从python中的列表中检索特定信息?
- javascript - Regex match string which does not fully consist of angular expressions
- jquery - kendoGrid 中的 TimePicker
- ruby-on-rails - create.js.erb 在表单提交后只调用一次
- spring - 从 websphere 7.0 迁移到 jboss eap 6.4 时出现并发打开语句和 Out of Package 错误
- php - 选择有连接但没有外键的项目
- sql - ColdFusion sql问题
- oracle - 没有发生变异表异常
- vba - Excel vba:打开工作簿时分配全局变量;如果发生错误则被删除