如何禁用 material-ui 自动完成中的过滤选项?
How to disable filtering options in material-ui Autocomplete?
我正在使用 material-ui Autocomplete。当用户更改输入时,它会异步从后端获取建议。这是代码的一部分:
const [options, setOptions] = useState([]);
<Autocomplete
...
freeSolo={true}
options={options}
renderInput={params => (
<TextField
...
{...params}
onChange={async (e) => {
// get suggestions from backend
const suggestions = await getSuggestions(e.target.value);
// update autocomplete options
setOptions(suggestions);
...
}}
InputProps={{
...params.InputProps,
endAdornment: (
<React.Fragment>
{loading ? <CircularProgress color="inherit" size={20} /> : null}
{params.InputProps.endAdornment}
</React.Fragment>
),
}}
/>
)}
/>
问题是 material-ui 自动完成不会显示使用 "setOptions" 设置的所有选项。它过滤它们。
例如:假设用户输入 "appl" 和 getSuggestions returns ["apple", "orange", "potato"]。但它只显示 "apple" 因为它过滤掉了 "orange" 和 "potato".
如何禁用过滤?
filterOptions
方法旨在让您自由决定哪些选项可用,哪些选项隐藏。
如果您只想显示所有选项 - 只需实施 filterOptions
到 return 所有值:
filterOptions={(options, state) => options}
我正在使用 material-ui Autocomplete。当用户更改输入时,它会异步从后端获取建议。这是代码的一部分:
const [options, setOptions] = useState([]);
<Autocomplete
...
freeSolo={true}
options={options}
renderInput={params => (
<TextField
...
{...params}
onChange={async (e) => {
// get suggestions from backend
const suggestions = await getSuggestions(e.target.value);
// update autocomplete options
setOptions(suggestions);
...
}}
InputProps={{
...params.InputProps,
endAdornment: (
<React.Fragment>
{loading ? <CircularProgress color="inherit" size={20} /> : null}
{params.InputProps.endAdornment}
</React.Fragment>
),
}}
/>
)}
/>
问题是 material-ui 自动完成不会显示使用 "setOptions" 设置的所有选项。它过滤它们。
例如:假设用户输入 "appl" 和 getSuggestions returns ["apple", "orange", "potato"]。但它只显示 "apple" 因为它过滤掉了 "orange" 和 "potato".
如何禁用过滤?
filterOptions
方法旨在让您自由决定哪些选项可用,哪些选项隐藏。
如果您只想显示所有选项 - 只需实施 filterOptions
到 return 所有值:
filterOptions={(options, state) => options}