javascript - 使用 getFieldDecorator 正确设置 Antd DatePicker 初始值
问题描述
尝试使用双向绑定将默认字段值设置为antd 。 Datepicker
getFieldDecorator
form.getFieldValue('joiningDate')
是一个时间戳值
第一次尝试
<Form.Item >
{getFieldDecorator('joiningDate', { initialValue: moment.unix(form.getFieldValue('joiningDate')) })(
<DatePicker disabled={inProgress}></DatePicker>
)}
</Form.Item>
第二次尝试
<Form.Item >
{getFieldDecorator('joiningDate', { initialValue: moment()) })(
<DatePicker disabled={inProgress}></DatePicker>
)}
</Form.Item>
joiningDate
当具有值时,上述两种方法都会引发以下错误-
如果joiningDate
为 null 则没有错误,默认情况下使用第二种方法,它应该显示今天的日期。
更新:
如果我预先创建的时刻对象joiningDate
,那么就DatePicker
可以了。但我只想在绑定到 Datepicker 时对其进行格式化。似乎initialValue
道具没有效果。
export default function App() {
return (
<FlexBox>
<FormContainer data={{ joiningDate: Date.now() }} />
</FlexBox>
);
}
const MyForm = ({ form }) => {
const { getFieldDecorator } = form;
return (
<Form>
<Form.Item>
{getFieldDecorator("joiningDate", { initialValue: moment() })(
<DatePicker />
)}
</Form.Item>
</Form>
);
};
const FormContainer = Form.create({
name: "advanced_search",
mapPropsToFields({ data }) {
if (!data) return;
let precreatedFields = {
joiningDate: Form.createFormField({
value: data["joiningDate"]
})
};
//more fields are removed
return precreatedFields;
}
})(MyForm);
代码示例
注意:类似的问题(在 antd design react 中使用带有 Form FormItem 的 DatePicker)。它有不同的错误“我得到异步验证器说'publishDate不是字符串”
解决方案
datePicker
您不使用moment
实例进行初始化。
export default function App() {
return (
<FlexBox>
// v Not `Date.now()`
<FormContainer data={{ joiningDate: moment() }} />
</FlexBox>
);
}
这就是为什么您会收到运行时错误mapPropsToFields
:
const FormContainer = Form.create({
name: 'advanced_search',
mapPropsToFields({ data }) {
if (!data) return;
let precreatedFields = {
joiningDate: Form.createFormField({
value: data['joiningDate']
})
};
// v You initializing 'joiningDate' with Date.now() and not with moment.
return precreatedFields;
}
})(MyForm);
推荐阅读
- python - Pytest <> Apache airflow ImportError
- vba - vba selenium 相同的类名但不同的选项单击
- tinymce - 将 TinyMCE 内容保存到 mySQL?
- python - 在创建 DataFrame 时,所有数据都出现在一行中。获取列中数据的正确方法是什么?
- c# - 比较两个数组中的项目以查看它们的总和是否为 10
- html - H1 英文文本叠加在 H1 希伯来文文本之上
- rust - 货物火焰图不适用于人造丝
- reactjs - 私人路线无法正常工作reactjs
- ssis - SSIS 部署向导 - 选择目标中没有可用的服务器
- c++ - 通过一个模板定义使用两种类型