[英]dynamically change Mui Autocomplete value selection
我使用 Mui AutoComplete 作为 select 选项来创建 Formik 表单。
<Autocomplete
disablePortal
options={vendors}
getOptionLabel={(option) => option.vendor_company}
onChange={(e, value) => {setFieldValue("vendor_id", value.id); }}
renderInput={(params) => (
<TextField
error={Boolean(touched.vendor_id && errors.vendor_id)}
helperText={touched.vendor_id && errors.vendor_id}
onBlur={handleBlur}
//onChange={handleChange}
fullWidth
{...params}
label={t('Vendor')}
/>
)}
/>
以下JSON数据从服务器拉取返回,
vendor_id : 1
对于添加新的数据选择值,这非常有效。
但是如何根据编辑模式更改字段值呢? 意味着我正在从服务器获取数据,我需要以自动完成值显示服务器数据,
谢谢,
您可以使用 state 并使用服务器中的数据设置他,并将您想要显示的值放在自动完成的属性值上。
如果我想念你遇到的麻烦,请告诉我,我可以再次编辑。
利用 AutoComplete 组件的 'value' 属性,并将要在编辑模式下显示的值作为选项的 object 传递,这是一个小示例
建兴兴业
import { useState } from "react";
import { Autocomplete, TextField } from "@mui/material";
const options = [
{ label: "The Godfather", id: 1 },
{ label: "Pulp Fiction", id: 2 },
];
const App = ({ editMode = true }) => {
const [fieldValue, setFieldValue] = useState(editMode ? options[1] : null);
return (
<div className="App">
<Autocomplete
disablePortal
options={options}
onChange={(e, value) => {
console.log(value);
setFieldValue(value);
}}
value={fieldValue}
renderInput={(params) => (
<TextField
onChange={(e) => setFieldValue(e.target.value)}
label="Hello"
{...params}
/>
)}
/>
</div>
);
};
export default App;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.