[英]react-select typescript issue - Generic type 'ValueType' requires 2 type argument(s).ts(2314)
I am trying to utilize react-select
and have the following code:我正在尝试利用
react-select
并具有以下代码:
import React, {useState} from 'react';
import LanguageChange from '../../../Icons/LanguageChange';
import Select, { ValueType } from 'react-select';
type OptionType = {
value: string;
label: string;
};
export const LanguageSelector = () => {
const languageOptions: OptionType[] = [
{ value: 'English', label: 'EN' },
{ value: 'German', label: 'DE' },
{ value: 'French', label: 'FR' },
];
const [selectedOption, setSelectedOption] = useState<ValueType<OptionType>>(languageOptions[0]);
const handleChange = (option: ValueType<OptionType>) => {
setSelectedOption(option);
};
return (
<LanguageChange>
<Select
value={selectedOption}
onChange={setSelectedOption}
options={languageOptions}
/>
</LanguageChange>
)
}
But I keep getting the following error: (alias) type ValueType<OptionType extends OptionTypeBase, IsMulti extends boolean> = IsMulti extends true?但我不断收到以下错误:(别名)类型 ValueType<OptionType extends OptionTypeBase, IsMulti extends boolean> = IsMulti extends true? OptionsType: OptionType |
选项类型:选项类型 | null import ValueType Generic type 'ValueType' requires 2 type argument(s).ts(2314)
null 导入 ValueType 通用类型“ValueType”需要 2 个类型参数。ts(2314)
Any idea what I'm missing here?知道我在这里缺少什么吗?
ValueType
requires two generics: the OptionType
which you have provided and IsMulti
which is either true
or false
. ValueType
需要两个 generics:您提供的OptionType
和IsMulti
,它是true
或false
。 IsMulti
determines whether or not it is an array. IsMulti
确定它是否是一个数组。 If you have an OptionType
with {value: string}
, the ValueType
if it's a multiple select should be string[]
whereas for a single select it would be string
.如果您有一个带有
{value: string}
的OptionType
,则ValueType
如果它是多个 select 应该是string[]
而对于单个 select 它应该是string
。
In your case you have a single select so you can use ValueType<OptionType, false>
.在您的情况下,您有一个 select ,因此您可以使用
ValueType<OptionType, false>
。 But you can also just use string
because you already know that the value type of your options is string
so there is no need to work backwards.但是您也可以只使用
string
,因为您已经知道选项的值类型是string
,因此无需向后工作。
Update your onChange function to accept params like this:更新您的 onChange function 以接受如下参数:
onChange: (value: ValueType<OptionType, IsMulti>, actionMeta: ActionMeta<OptionType>) => void;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.