你好,我试图注册"日历"组件从"Prime React"库与"React Form Hook".问题是我不能为输入设置默认值.

这是我设置默认值的地方.

    const { register, handleSubmit, reset, formState: { errors }, control } = useForm({ mode: 'onSubmit', defaultValues: {
        title: "test",
        start: new Date(),
        end: new Date()
        
      } });

这是我的部件.

import React from 'react'
import { Calendar } from 'primereact/calendar';
import { useFormState } from 'react-hook-form';
import { CDatePickerStyled } from './CDatePicker.styled';

export default function CDatePicker({ required, disabled, register, control, placeHolder }) {
  const { errors } = useFormState({ control });
  return (
    <CDatePickerStyled>
      <Calendar className={errors[register.name] ? 'p-invalid' : ''} {...register} placeholder={placeHolder} disabled={disabled}></Calendar>
      {required ? <span className={errors[register.name] ? 'error' : ''}>Required*</span> : null}
    </CDatePickerStyled>
  )
}

推荐答案

这不就是为什么在文档站点上有一个日历react 钩子表单示例的原因吗:https://primereact.org/calendar/#hookform

import React, { useRef } from 'react';
import { Controller, useForm } from 'react-hook-form';
import { Button } from 'primereact/button';
import { classNames } from 'primereact/utils';
import { Calendar } from "primereact/calendar";
import { Toast } from "primereact/toast";

export default function HookFormDoc() {
    const toast = useRef(null);
    const defaultValues = { date: null };
    const form = useForm({ defaultValues });
    const errors = form.formState.errors;

const show = () => {
    const date = new Date(form.getValues('date')).toLocaleDateString();
    
    toast.current.show({ severity: 'success', summary: 'Form Submitted', detail: date });
};

    const onSubmit = (data) => {
        data.date && show();
        form.reset();
    };

    const getFormErrorMessage = (name) => {
        return errors[name] ? <small className="p-error">{errors[name].message}</small> : <small className="p-error">&nbsp;</small>;
    };

    return (
        <div className="card flex justify-content-center">
            <form onSubmit={form.handleSubmit(onSubmit)} className="flex flex-column gap-2">
                <Toast ref={toast} />
                <Controller
                    name="date"
                    control={form.control}
                    rules={{ required: 'Date is required.' }}
                    render={({ field, fieldState }) => (
                        <>
                            <label htmlFor={field.name}>Date</label>
                            <Calendar inputId={field.name} value={field.value} onChange={field.onChange} dateFormat="dd/mm/yy" className={classNames({ 'p-invalid': fieldState.error })} />
                            {getFormErrorMessage(field.name)}
                        </>
                    )}
                />
                <Button label="Submit" type="submit" icon="pi pi-check" />
            </form>
        </div>
    )
}

Javascript相关问答推荐

React Native平面列表自动滚动

Next.js Next/Image图像隐含性有任何类型-如何修复?

Klaro与Angular的集成

字节数组通过echo框架传输到JS blob

我可以从React中的出口从主布局调用一个处理程序函数吗?

如何从一个列表中创建一个2列的表?

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

XSLT处理器未运行

Angular 订阅部分相互依赖并返回数组多个异步Http调用

使用Google API无法进行Web抓取

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

如何在JAVASCRIPT中临时删除eventListener?

搜索功能不是在分页的每一页上进行搜索

无法重定向到Next.js中的动态URL

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

如何使本地html页面在重新加载时保持当前可隐藏部分的打开状态?

如何使用画布在另一个内部绘制一个较小但相同的形状,同时保持恒定的边界厚度?

处理app.param()中的多个参数

MUI迷你图:如何将$符号添加到MUI迷你图中的工具提示数据