[英]MUI Autocomplete change selected option when another field changes
我有两个带有 MUI 和 Formik 的字段,一个普通的 TextField 和一个自动完成字段。 当 TextField 更改时,我需要 select 自动完成选项,该怎么做?
在 formik 中一切正常,值发送了正确的数据,但自动完成不会更改为正确的值。
示例: https://codesandbox.io/s/compassionate-river-f32btt?file=/src/demo.js
您可能可以更好地安排它,但这很有效
const [selected, setSelected] = useState(null);
function onBlurCep(ev, setFieldValue) {
let selected = states.find((v) => v.label === formik.values.cep) || {};
setSelected(selected);
- - - -
<Autocomplete
value={selected}
options 属性是一个数组,但值由字符串表示。 您需要将 function 传递给isOptionEqualToValue
属性, AutoComplete
组件将使用该属性确定项目数组中的哪个项目与当前值匹配。
您还需要将value
属性移出文本字段并将其直接传递给自动完成,以便它可以管理自己的值。
<Autocomplete
filterSelectedOptions
id="estado"
name="estado"
options={states}
clearText="Apagar"
// Add the following props
isOptionEqualToValue={(option, value) => option.value === value}
value={formik.values.estado}
renderInput={(params) => (
<TextField
{...params}
error={Boolean(formik.errors.estado)}
helperText={formik.errors.estado}
/>
)}
onChange={(e, newValue) => {
formik.handleChange({
target: { name: "estado", value: newValue.value },
});
}}
/>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.