Reactjs 材质UI自动完成时的Typescript相等问题

Reactjs 材质UI自动完成时的Typescript相等问题,reactjs,typescript,material-ui,formik,Reactjs,Typescript,Material Ui,Formik,数据存储为: { iso: "gb", label: "United Kingdom", country: "United Kingdom" }, { iso: "fr", label: "France", country: "France" } 传递给自动完成的值为: { iso: "gb", label: "United Kingdom", country: "United Kingdom" } 控制台中报告了错误 物料界面:提供给自动完成的值无效。 所有选项均与{“标签”:“英国”

数据存储为:

 { iso: "gb", label: "United Kingdom", country: "United Kingdom" },
 { iso: "fr", label: "France", country: "France" }
传递给自动完成的值为:

{ iso: "gb", label: "United Kingdom", country: "United Kingdom" }
控制台中报告了错误

物料界面:提供给自动完成的值无效。 所有选项均与
{“标签”:“英国”、“iso”:“gb”、“国家”:“英国”}
不匹配

value={}

类型“string | ICountry”不能分配给类型“ICountry | ICountry[]| null |未定义”。 类型“string”不可分配给类型“ICountry | ICountry[]| null | undefined”

问题:向组件传递数据并没有将其设置为相应的选项,我完全不知道如何解决这个问题

代码沙盒问题:


物料界面
的完整信息如下:

物料界面:提供给自动完成的值无效。 所有选项均与
{“标签”:“英国”、“iso”:“gb”、“国家”:“英国”}
不匹配。 您可以使用
getOptionSelected
prop自定义相等性测试

默认的相等性测试只是
==
,因此如果您的选项是对象,那么您的值必须是这些对象中的一个,才能匹配。具有相同值的不同对象将不匹配

但是,正如消息告诉您的,您可以通过
getOptionSelected
prop自定义相等性测试。例如,您可以指定:

getOptionSelected={(option, value) => option.iso === value.iso}
或者,您可以对所有对象属性进行深度相等性检查

可以使用
value={values.address.country as ICountry}
修复类型错误


这里是您的沙盒的一个工作版本:

最好有一个codesandbox链接,但您应该将所有相关代码作为文本包含在问题本身中(请参阅)。我对material ui一无所知,但类型问题似乎是您正在将初始值设置为可能的
'
,一个
字符串,而不是中的
未定义的
。运行时问题可能是其他问题。谢谢Jcalz,我将在以后的问题中采纳你的观点。这对我很有用!!要清除此警告,“材质UI:提供给自动完成的值无效。没有与匹配的选项”。谢谢。对于最新的材料UI实验室依赖项(4.0.0-alpha.57),同样的错误。似乎不可改变。无论谁想要避免警告,都可以降级到类似4.0.0-alpha.51(如Codesandbox示例中所使用的)。那个版本删除了对我的警告。

import { ICountry } from "./investor";

export const countries: ICountry[] = [
  {
    iso: "gb",
    label: "United Kingdom",
    country: "United Kingdom"
  },
  {
    iso: "fr",
    label: "France",
    country: "France"
  }
];
getOptionSelected={(option, value) => option.iso === value.iso}