javascript - 反应:名称未通过 onChange(),e.target.name 在 DatePicker 上未定义
问题描述
我正在使用构建一个 MERN 堆栈应用程序 ( "react": "^16.14.0"
),该应用程序具有使用 DatePicker ( "react-datepicker": "^4.2.1"
) 设置日期范围的表单。目前,正在选择日期的值,但名称未定义。This is throwing a TypeError and crashing the application when a date is selected. 如何将 e.target.name 设置为 startDate 和 endDate?
打字错误
react-dom.development.js:327
Uncaught TypeError: Cannot read properties of undefined (reading 'name')
at onChange (index.js:55)
表单数据
const [formData, setFormData] = useState({
startDate: '',
endDate: '',
})
const {
startDate,
endDate,
} = formData
日期选择器
<DatePicker
isClearable
filterDate={(d) => {return new Date() > d}}
placeholderText="Select Start Date"
dateFormat="MMMM yyyy"
selected={startDate}
selectsStart
startDate={startDate}
endDate={endDate}
onChange={(date) => onChange({ name: startDate, value: date })}
/>
onChange 函数
const onChange = (e) => {
console.log(e)
setFormData({ ...formData, [e.target.name]: e.target.value })
}
控制台.log()
name: undefined
value: Tue Aug 03 2021 00:00:00 GMT-0400 (Eastern Daylight Time)
解决方案
通常我们使用event.target.name
. 但是,当我们使用任何组件库时,它取决于库开发人员如何让位于获取字段名称。所以你必须检查图书馆文件。
惊讶你还有另一种方式。只需要在 onChange 函数中传递字段名称
<DatePicker value={dateValue} onChange={(date) => onChange(name,date)} />
onChange=(name, date)=>{ console.log(name,date) }
推荐阅读
- java - 将 onCompletionListener 放在 java 代码下面的最佳位置是什么?
- laravel - Laravel 重命名迁移类
- c# - C#垃圾收集的原因?
- php - 更改语言留言密码规则
- c# - 我要为 TeamProject 功能属性的字典添加哪些键/值?
- java - 如何将数据从浏览器拖放到具有自定义 MIME 类型的 java swing 应用程序中?
- viber - 如何将多个号码添加到 viber 组
- security - Quarkus 安全 smallrye jwt
- syntax-error - Zoho:Deluge:使用什么技术来调试 Zoho Deluge 语法错误?
- jasperserver - JasperServer 总是忽略提示