繁体   English   中英

动态更改 Mui 自动完成值选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM