Reactjs Typescript,使用字符串查找枚举

Reactjs Typescript,使用字符串查找枚举,reactjs,typescript,enums,react-select,Reactjs,Typescript,Enums,React Select,我正在做我的第一个打字脚本和React项目。我有一个测验应用程序在 现在,从下拉菜单中选择一个类别实际上没有任何作用。我需要使用所选选项从所选类别获取问题的帮助 我有一个枚举类别 在端点提取问题的函数 用户使用以下onChange功能从菜单中选择类别。所选选项以selectedOption作为type OptionType的状态存储 Console logging selectedOption在此返回{value:“ENTERTAINMENT_BOOKS”,标签:“BOOKS”} 如何使用sel

我正在做我的第一个打字脚本和React项目。我有一个测验应用程序在

现在,从下拉菜单中选择一个类别实际上没有任何作用。我需要使用所选选项从所选类别获取问题的帮助

我有一个枚举类别

在端点提取问题的函数

用户使用以下onChange功能从菜单中选择类别。所选选项以selectedOption作为type OptionType的状态存储

Console logging selectedOption在此返回{value:“ENTERTAINMENT_BOOKS”,标签:“BOOKS”}

如何使用selectedOption中的值中的字符串在类别枚举中查找成员

我尝试了
Category[Category]
Category[Category?.value]
,但两者都不起作用


我是Typescript的新手,因此任何反馈都非常感谢,如果我以错误的方式进行此操作,请告诉我。

您仅使用
.value
属性调用
setSelectedOption
。请参见第一行末尾的
.value

const value = (selectedOption as OptionType).value;
setSelectedOption(value);
如果您使用的是更严格的类型,则会在这方面出错。不幸的是,
OptionType['value']
any
并且
any
可分配给任何对象,因此可以调用
setSelectedOption(any)

您可能在发布后更改了代码,因为它似乎将
记录为
枚举
中的
编号
值,而不是键
“娱乐书籍”
。 试试这个:

type OptionType = { 
  label: string;
  value: Category; // is a `number`, but only the specific numbers in the enum
}
onChange={(selectedOption) => {
           const value = (selectedOption as OptionType).value;
           setSelectedOption(value)
           console.log(selectedOption)
          }}
type OptionType = { 
  label: any;
  value: any; 
}
const [selectedOption, setSelectedOption] = useState<OptionType>();
const startTrivia = async () => {
    setLoading(true);
    setGameOver(false);


    const category = selectedOption
    console.log(category)

    const newQuestions = await fetchQuizQuestions(
      TOTAL_QUESTIONS,
      Category["SCIENCE_AND_NATURE"],
      Difficulty.HARD,
    );

    setQuestions(newQuestions);
    setScore(0);
    setUserAnswers([]);
    setNumber(0);
    setLoading(false);
  }
const value = (selectedOption as OptionType).value;
setSelectedOption(value);
type OptionType = { 
  label: string;
  value: Category; // is a `number`, but only the specific numbers in the enum
}