reactjs - 如何使用 formik 形式在 react-datepicker 中获取选定日期?
问题描述
我在其中使用 Formik 和 react-datepicker。当我选择日期并点击提交它显示的表单时"startDate": ''
,当我更改为时initialValues={{ startDate: '' }}
,initialValues={{ startDate: this.state.startDate }}
它显示今天的日期(当前日期)。但我想获得选定的日期。
//import libraries
import React from 'react'
import { Formik, Form } from 'formik'
import DatePicker from "react-datepicker"
import "react-datepicker/dist/react-datepicker.css";
//Class component
export default class InsertStockComponent extends React.Component {
state = {
startDate: new Date()
}
handleChange = (date) => {
this.setState({
startDate: date
});
}
render() {
return (
<div id="main-content">
<Formik
initialValues={{ startDate: '' }}
onSubmit={(values, { setSubmitting }) => {
setTimeout(() => {
alert(JSON.stringify(values, null, 2));
setSubmitting(false);
}, 400);
}}
>
{({ isSubmitting }) => (
<div className="row clearfix">
<div className="header">
</div>
<Form>
<div className="row ml-4 mr-4">
<div className="form-group col-3 mb-2">
<DatePicker selected={this.state.startDate} dateFormat="MMMM d, yyyy" className="form-control" name="startDate" onChange={this.handleChange} />
</div>
</div>
<div className="row mb-3">
<div className="col-5 mb-4"></div>
<button type="submit" className="btn btn-lg btn-outline-success mt-4 mb-4" disabled={isSubmitting}>insert item</button>
</div>
</Form>
</div>
)}
</Formik>
</div>
)
}
}
解决方案
解决方案
我在这里为您创建了一个工作示例:https ://stackblitz.com/edit/demo-react-formik-datepicker
看一看。继续阅读解释。
解释
Formik
用于管理表单的状态。因此,您不需要定义自己的状态,因为Formik
它为您提供了执行此操作的实用程序。因此,您可以安全地删除这段代码:
state = {
startDate: new Date()
}
handleChange = (date) => {
this.setState({
startDate: date
});
}
相反,使用它来管理您的状态values.startDate
,setFieldValue
这两者都是Formik
基于initialValues
您传递给它的。
推荐阅读
- excel - 自动登录不会输入凭据 - 提示错误
- python - Django - 可以在失败时重试任何数据库操作?
- python - 在图像上绘制霍夫变换线
- ruby-on-rails - 如何解析 json response.body 以将键的值存储在 ruby on rails 中?
- python - 在 selenium python 中处理多个窗口
- vb.net - 如何使用 Access 数据库删除 VB.net 中的记录?
- animation - eb 指南中的精灵动画(社区版)
- html - Auto adjust/crop the height of an image inside a bootstrap col, to be equal to height of another col
- cypress - 如何从单独的文件中调用 cypress 中的函数?
- c++ - 如果堆栈在数字较低的地址处增长,为什么指针比较会反转呢?