React material-ui KeyboardDatePicker 和 Formik 不起作用

Posted

技术标签:

【中文标题】React material-ui KeyboardDatePicker 和 Formik 不起作用【英文标题】:React material-ui KeyboardDatePicker and Formik not working 【发布时间】:2020-06-16 13:12:49 【问题描述】:

我正在使用material-ui 创建一个表单,并使用FormikYup 进行验证。

TextField 组件运行良好,但是,KeyboardDatePicker 组件在控制台中出现以下错误

_onChange 不是函数

现在正在展示

类型未定义。

下面是带有代码的cbs。 https://codesandbox.io/s/agitated-dust-wf6fn

【问题讨论】:

我运行了您的代码,但没有看到该错误。然而,我在findDOMNode 中看到了其他类型的错误 【参考方案1】:

只需将onChange 函数改成this:

onChange=(name, value) => formik.handleChange('dob', value)

【讨论】:

代码沙箱不工作。更改日期在日期选择器中没有更改【参考方案2】:

您可以使用.setFieldValue 手动设置onChange 事件的值。

 onChange=val => 
      console.log("___", val);
      formik.setFieldValue("dob", val);
  

此方法适用于任何用例。

【讨论】:

完美运行,谢谢。为什么这个组件不能与 Formik 的 handleChange 一起使用?有必要定义一个自己的 handleChange 依赖于 e.target.name ,如果 datePicker 不起作用。 e.target 在 DatePicker 中将始终未定义 有趣。谢谢【参考方案3】:

这是相同的沙盒演示

https://codesandbox.io/s/formik-material-ui-date-picker-with-yup-validate-f3mdp

【讨论】:

以上是关于React material-ui KeyboardDatePicker 和 Formik 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Material-UI 中使用 React 的 'ref' 属性

React + Material-UI |如何创建水平滚动卡片?

为 SelectField 显示空白菜单项的正确方法是啥(material-ui,react)

React中Material-Ui中增加标签的问题

React Material-UI 网格系统 [重复]

如何覆盖(覆盖)material-ui(React)中的类和样式