简体   繁体   English

得到了'DatePickerProps<unknown> ': onChange, value, renderInput' 尝试使用 MUI 和 react-hook-form 创建自定义组件时</unknown>

[英]got 'DatePickerProps<unknown>': onChange, value, renderInput' when trying to create custom component with MUI and react-hook-form

I'm trying to make reusable component out of MUI Datepicker and React Hook Form我正在尝试使用 MUI Datepicker 和 React Hook Form 制作可重用组件

but got Type '{ control: Control<FieldValues, object>; name: string; }' is missing the following properties from type 'DatePickerProps<unknown>': onChange, value, renderInput ts(2739)但是得到了Type '{ control: Control<FieldValues, object>; name: string; }' is missing the following properties from type 'DatePickerProps<unknown>': onChange, value, renderInput ts(2739) Type '{ control: Control<FieldValues, object>; name: string; }' is missing the following properties from type 'DatePickerProps<unknown>': onChange, value, renderInput ts(2739) Type '{ control: Control<FieldValues, object>; name: string; }' is missing the following properties from type 'DatePickerProps<unknown>': onChange, value, renderInput ts(2739) on the parent component Type '{ control: Control<FieldValues, object>; name: string; }' is missing the following properties from type 'DatePickerProps<unknown>': onChange, value, renderInput ts(2739)

I'm getting stuck now:我现在卡住了:

import { DatePickerProps } from "@mui/lab";
import { ComponentProps } from "react";

import { Control, Controller } from "react-hook-form";

import DateInputComponent from "./DateInputComponent";

type Props = {
  name: string;
  control: Control;
  errors?: {
    [x: string]: any;
  };
  rules?: any;
  defaultValue?: any;
} & ComponentProps<typeof DateInputComponent>;

type ExtendedProps = Props & DatePickerProps;

const ControlledDateInput = ({
  name,
  control,
  errors,
  rules,
  defaultValue,
  ...props
}: ExtendedProps) => {
  return (
    <Controller
      control={control}
      name={name}
      rules={rules}
      defaultValue={defaultValue}
      render={({ field: { onChange, onBlur, value } }) => (
        <DateInputComponent
          {...props}
          onChange={onChange}
          onBlur={onBlur}
          value={value}
          error={!!errors?.[name]}
          helperText={
            errors?.[name] ? errors?.[name]?.message || "Invalid field" : ""
          }
        />
      )}
    />
  );
};

export default ControlledDateInput;

It's way better to go to this sandbox: https://codesandbox.io/s/affectionate-drake-5bjbl?file=/src/App.tsx go 这个沙箱更好: https://codesandbox.io/s/affectionate-drake-5bjbl?file=/src/App.tsx

Please help!!!请帮忙!!!

The DatePickerProps type takes 2 generics. DatePickerProps类型采用 2 generics。 (At the time you posted your question, it only required one.) You need to invoke the type like DatePickerProps<unknown, unknown> or DatePickerProps<Date, Date> , etc. (在您发布问题时,它只需要一个。)您需要调用DatePickerProps<unknown, unknown>DatePickerProps<Date, Date>等类型。

In my case, DatePickerProps from @mui/lab didn't have a proper type declared.在我的例子中, @mui/labDatePickerProps没有声明正确的类型。 I imported it from @mui/x-date-pickers as I was using the x-date-pickers package to render to my custom component.当我使用 x-date-pickers package 渲染到我的自定义组件时,我从@mui/x-date-pickers pickers 导入了它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM