【问题标题】:Why does it show me the "Argument of type 'string' is not assignable to parameter of type 'SetStateAction'" error?为什么它向我显示“\'string\' 类型的参数不可分配给 \'SetStateAction\'\ 类型的参数”错误?
【发布时间】:2022-11-08 00:45:37
【问题描述】:
export interface IFormSelect<
  T extends FieldValues,
  U extends IOption = IOption,
  V = any
  > {
  control: Control<T, any>;
  name: keyof T;
  defaultValue?: string;
  placeholder?: string;
  options: U[];
  formatOptions?: (data: U, formatOptionLabelMeta: FormatOptionLabelMeta<U>) => ReactNode;
  setValue?: Dispatch<SetStateAction<V>>;
}
const FormSelect = <T extends IOption = IOption, U = any>({
                                                     control,
                                                     defaultValue,
                                                     name,
                                                     options,
                                                     placeholder,
                                                     formatOptions,
                                                     setValue
                                                   }: IFormSelect<IOrderForm, T, U>) => {
  return (
    <div className='w-96 z-[41]'>
      <Controller
        control={control}
        name={name}
        defaultValue={defaultValue}
        render={({ field: { value, onChange, ref } }) => (
          <Select
            ref={ref}
            options={options}
            value={options.filter(option => typeof value === 'string' && value.includes(option.value))}
            onChange={(val) => {
              onChange(val?.value);
              if (setValue && val?.value) setValue('hello');
            }}
            placeholder={placeholder}
            formatOptionLabel={formatOptions}
          />
        )}
      />
    </div>
  );
};

在“if (setValue && val?.value) setValue('hello')”行中,它不断地向我抛出我真的不明白为什么的错误。因为我指定 setState 可以在接口中接受任何参数,但它仍然说有错误。 我需要做什么来解决这个问题,最重要的是错误的原因是什么?

【问题讨论】:

    标签: reactjs typescript


    【解决方案1】:

    接口包含setValue?: Dispatch&lt;SetStateAction&lt;V&gt;&gt;;

    在我的代码中,我有

    setValue('hello')
    

    但是hello是一个字符串,而在接口中,参数类型是Dispatch&lt;SetStateAction&lt;V&gt;&gt; | undefined

    附言我是初学者,可能是错的:)

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2021-07-14
      • 2021-07-21
      • 2021-05-16
      • 2021-08-01
      • 2021-03-08
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多