【发布时间】:2020-11-25 17:00:55
【问题描述】:
【问题讨论】:
标签: javascript reactjs autocomplete material-ui
【问题讨论】:
标签: javascript reactjs autocomplete material-ui
原生道具freeSolo 可以帮到你
<Autocomplete
id="free-solo-demo"
freeSolo
options={top100Films.map((option) => option.title)}
renderInput={(params) => (
<TextField {...params} label="Placeholder" margin="normal" variant="outlined" />
)}
/>
【讨论】:
freeSolo 也完全改变了行为。请参阅下面的答案,了解 API 提供的隐藏下拉图标/按钮的方法。
One answer 指定使用:<Select IconComponent={undefined} ... />。但是,这对我不起作用。
而不是 <Select IconComponent="none" ... /> 工作,但它在 HTML 中给出了一个 <none> 标记并且浏览器给出了警告。
【讨论】:
IconComponent="span" 或任何其他有效的 HTML 元素。没有箭头,没有警告。
IconComponent="span"。如果您使用IconComponent="none" 或IconComponent={undefined},则会出现错误TS2322: Type '"none"' is not assignable to type 'ElementType<any>'。
这对我有用,添加了道具“popupIcon”:
return (
<Autocomplete
freeSolo={false}
popupIcon={""}
...
/>
【讨论】:
将freeSolo 属性添加到Autocomplete 使我们能够输入不在下拉选项中的值。
如果您只需要在输入中输入下拉列表中的值,我们可以像这样覆盖Autocomplete 组件的 CSS 属性来实现这一点
const autocompleteStyles = AutocompleteStyles();
return (
<Autocomplete
classes={autocompleteStyles}
freeSolo
options={top100Films.map((option) => option.title)}
renderInput={(params) => (
<TextField {...params} label="Placeholder" margin="normal" variant="outlined" />
)}
/>
)
const AutocompleteStyles = makeStyles(theme => ({
endAdornment: {
display: 'none'
}
}))
有关更多详细信息,请参阅此材料 ui 链接。 https://material-ui.com/api/autocomplete/
【讨论】:
您可以使用 Select API documentation 中的 IconComponent 属性
尝试做这样的事情:
<Select IconComponent={undefined} ... />
【讨论】:
在 MUI v5 中,有一个干净的选项可以通过 forcePopupIcon 属性隐藏下拉/弹出图标。
<Autocomplete
forcePopupIcon={false}
// other props...
/>
这比freeSolo 选项要好得多,因为它不会改变自动完成的行为。它还完全删除了 InputAdornment,而不是用 CSS 解决方案隐藏它。
【讨论】: