Поскольку у вас есть {
сразу после =>
, ваша функция стрелки использует форму FunctionBody , а {
и окончание }
являются блоком функции, а не литералом объекта. Итак, у вас есть код в функции, который выглядит следующим образом:
abbr: x.address.state; name: states[x.address.state]
(Я немного удивлен, что вы получаете ошибку за это; мне кажется, что это правильный код с использованием меток, но ... Или возможно, ошибка связана с приведенным ниже блоком кода.)
Если вы хотите использовать сжатую форму, поместите ()
вокруг литерала объекта:
const activeStates = props.locations.map(x => ({abbr: x.address.state; name: states[x.address.state]}));
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^
У вас также есть пара опечаток во втором блоке кода, у вас нет )
для завершения списка аргументов вызова map
, и у вас нет }
для завершения выражения JSX. Исправление:
<select>
<option>
{Object.entries(activeStates).map((name, abbreviation) => <option key={abbreviation} value={abbreviation}>{name}
</option>))}
</select>
Но , Object.entries
дает массив массивов [key, value]
, поэтому в вашем списке параметров для map
должна использоваться деструктуризация, а не два параметра ( Я также, вероятно, не стал бы делать это так долго, но это вопрос стиля) и они были бы в обратном порядке:
<select>
<option>
{Object.entries(activeStates).map(([abbreviation, name]) => (
<option key={abbreviation} value={abbreviation}>{name}</option>
))}
</select>