Я хочу показать раскрывающийся список в React, используя следующее перечисление. Идея состоит в том, чтобы не использовать случайные строки в качестве ключей в моем <select>
. Ключи должны быть ограничены до Stooges.larry
, Stooges.curly
и Stooges.moe
:
const Stooges = {
larry: "Larry Fine",
curly: "Curly Howard",
moe: "Moe Howard"
};
Вот код для моего выбора, который отлично работает:
<select value={stooge} onChange={handleChange}>
{Object.keys(Stooges).map(key => (
<option key={key} value={key}>
{Stooges[key]}
</option>
))}
</select>
Проблема возникает, когда я пытаюсь установить начальное значение раскрывающегося списка - я должен использовать жестко закодированный ключ:
const [stooge, setStooge] = React.useState('larry');
Я могу немного смягчить это, выбрав первый ключ:
const keys = Object.keys(Stooges);
const [stooge, setStooge] = React.useState(keys[0]);
Однако, это все еще не так. Я не могу сказать от key[0]
, кого я выбираю.
Есть ли лучший способ справиться с перечислениями в этом случае использования? Я пробовал перечисления строк в TypeScript, но они имеют ту же проблему:
enum Stooges {
larry = "Larry Fine",
curly = "Curly Howard",
moe = "Moe Howard"
}
Пожалуйста, смотрите мой CodeSandbox здесь .