属性 'option' 在类型 'CreateOptionActionMeta' 上不存在
Property 'option' does not exist on type 'CreateOptionActionMeta'
我在我的 Typescript 项目中使用 react-selects 的 CreatableSelect 组件,但我遇到了如下所示的类型问题。
我的 CreatableSelect 组件如下所示:
<CreatableSelect
isMulti
isLoading={isLoading}
getNewOptionData={(value, label) => ({
value: slugify(value),
label,
})}
onChange={(selectedValues, actionMeta) => {
onFoodsSelectChange(selectedValues, actionMeta);
}}
options={options}
value={selected}
/>
并且根据 the documentation, the getNewOptionData
"Returns the data for the new option when it is created. Used to display the value, and is passed to onChange.". However, the types for 'create-option'
操作不包括 getNewOptionData
传入的 option
。
有人能帮帮我吗?
这可能只是 create-option
动作元的错误类型定义。但是虽然 CreateOptionActionMeta
type 没有 option
字段,但它的运行时值有它。而且它也可以作为 selectedValues
参数的最后一个元素访问。
因此,您可以忽略错误的输入并断言您更了解的打字稿:
type FoodOption = { value: string, label: string }
const onFoodsSelectChange = (
selectedValues: OptionsType<FoodOption>,
actionMeta: ActionMeta<FoodOption>
) => {
switch (actionMeta.action) {
case 'create-option': {
const option = (actionMeta as unknown as { option: FoodOption }).option
...
或者使用selectedValues
的最后一个元素:
const onFoodsSelectChange = (
selectedValues: OptionsType<FoodOption>,
actionMeta: ActionMeta<FoodOption>
) => {
switch (actionMeta.action) {
case 'create-option': {
const [option] = selectedValues.slice(-1)
...
我在我的 Typescript 项目中使用 react-selects 的 CreatableSelect 组件,但我遇到了如下所示的类型问题。
我的 CreatableSelect 组件如下所示:
<CreatableSelect
isMulti
isLoading={isLoading}
getNewOptionData={(value, label) => ({
value: slugify(value),
label,
})}
onChange={(selectedValues, actionMeta) => {
onFoodsSelectChange(selectedValues, actionMeta);
}}
options={options}
value={selected}
/>
并且根据 the documentation, the getNewOptionData
"Returns the data for the new option when it is created. Used to display the value, and is passed to onChange.". However, the types for 'create-option'
操作不包括 getNewOptionData
传入的 option
。
有人能帮帮我吗?
这可能只是 create-option
动作元的错误类型定义。但是虽然 CreateOptionActionMeta
type 没有 option
字段,但它的运行时值有它。而且它也可以作为 selectedValues
参数的最后一个元素访问。
因此,您可以忽略错误的输入并断言您更了解的打字稿:
type FoodOption = { value: string, label: string }
const onFoodsSelectChange = (
selectedValues: OptionsType<FoodOption>,
actionMeta: ActionMeta<FoodOption>
) => {
switch (actionMeta.action) {
case 'create-option': {
const option = (actionMeta as unknown as { option: FoodOption }).option
...
或者使用selectedValues
的最后一个元素:
const onFoodsSelectChange = (
selectedValues: OptionsType<FoodOption>,
actionMeta: ActionMeta<FoodOption>
) => {
switch (actionMeta.action) {
case 'create-option': {
const [option] = selectedValues.slice(-1)
...