我使用formik和material-ui来构建自定义自动完成组件.
我使用yup添加验证,以要求自动完成(用户需要 Select 一个选项):
validationSchema: Yup.object().shape({
skill: Yup.object().shape({
value: Yup.string().required(),
label: Yup.string().required()
})
}),
当用户 Select 任何选项时,我希望它将选项保存为{Label,Value},而不仅仅是值,因为然后我需要将其作为对象发送到服务器.
我收到一些错误:
-
当我按下提交时,我收到错误
Objects are not valid as a React child (found: object with keys {value, label}). If you meant to render a collection of children, use an array instead.
-
我收到了这些警告:
MUI:提供给自动完成的值无效.没有一个选项与`{"Label":"",""Value":""}`匹配.您可以使用`isOptionEqualToValue`props 自定义等价性测试.
警告:props 类型失败:提供给`ForwardRef(Textfield)`的props `helperText`无效,应为ReactNode.
我正在try 构建可重复使用的自动完成组件,以便能够以{Label,Value}的形式获得选定值,而不会出现任何错误,并能按预期工作. 我不确定我的确认是不是正确的方式.我只想让用户 Select 一个选项.
另外,我想问一下,我可以将对象详细信息存储到值中而不是作为字符串吗?如果不是,将物品的价值存储为选项的最佳方式是什么?
我的YUP模式是正确的吗?我应该将对象的id存储为值,然后对其进行筛选吗?如何将值作为字符串传递给自动完成并在自动完成中显示选中的值? 如果没有技能模式作为对象,我如何才能做到这一点,就像字符串一样:
validationSchema: Yup.object().shape({
skill: Yup.string().required()
}),