【发布时间】:2021-07-11 10:07:07
【问题描述】:
如何仅在输入内容时显示 Material-UI Autocomplete 下拉列表?我在我的一个项目中添加了一个 Material-UI Autocomplete 组件。但问题是当我点击TextField 时,它会自动下拉所有列表选项。当用户要输入内容时,我只想下拉建议。下面是我的代码。
import React, { useEffect, useState } from "react";
import { Grid, Popper } from "@material-ui/core";
import axios from "axios";
import Autocomplete from "@material-ui/lab/Autocomplete";
import { useStyles, CssTextField } from "./classes";
export default function SearchItems({ setFieldValue, dialogOpen }) {
const classes = useStyles();
const [results, setResults] = useState([]);
useEffect(() => {
loadSearchItemsList();
}, []);
//load restaurants and tags
const loadSearchItemsList = async () => {
try {
let { data } = await axios.get("/search");
// console.log(data)
setResults(data);
} catch (error) {
// setAlert({
// showAlert: true,
// severity: "error",
// message: "Loading failed!",
// });
dialogOpen(true)
}
};
return (
<Grid item xs={12} sm={12} md={12} lg={12} className={classes.gapSpace}>
<Autocomplete
id="free-solo-demo"
freeSolo
getOptionLabel={(option) => option.name}
autoComplete
onChange={(event, newValue) => {
if (newValue) {
const { id, type, name } = newValue;
setFieldValue("id", id);
setFieldValue("type", type);
setFieldValue("name", name);
} else {
setFieldValue("id", null);
setFieldValue("type", null);
setFieldValue("name", null);
}
}}
options={results}
renderInput={(params) => (
<CssTextField
{...params}
className={classes.input}
placeholder="Restaurant, Food"
variant="outlined"
id="custom-css-outlined-input"
/>
)}
/>
</Grid>
);
}
【问题讨论】:
标签: reactjs autocomplete material-ui