Я пытаюсь добиться следующего:
В React у меня есть компонент, в котором реквизит принимает массив с объектами, после чего этот компонент отображает эти объекты в элементе раскрывающегося меню.
Я хотел бы сделать некоторые из этих пунктов выпадающего меню условно. Другими словами: некоторые пользователи могут видеть раскрывающийся список, а другие нет.
Каков правильный способ добиться этого? Я пытался использовать оператор распространения (согласно этому Отвечать, но я продолжаю получать сообщение об ошибке
TypeError: Invalid attempt to spread non-iterable instance
Что я делаю неправильно?
Мой код:
<Dropdown
type = "link"
itemsObject = {
[...states.all.map(state => ({
value: state.name,
onClick: () => {
this.updateCandidate(candidate, {state_id: state.id})
}
})),
{
isDivider: true
},
{
value: "Notities bewerken",
onClick: () => {
this.openCandidateModel(candidate)
}
},
...(candidate.state.id === 2 ? [{
value: "Afspraak beheren",
onClick: () => {
this.openCandidateModel(candidate)
}
}] : undefined)
]}
/>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пытаетесь распространять undefined, когда candidate.state.id !== 2. Измените его на:
...(candidate.state.id === 2 ? [{
value: "Afspraak beheren",
onClick: () => {
this.openCandidateModel(candidate)
}
}] : [])
Кроме того, вероятно, стоит упомянуть, что {...undefined} действителен, а [...undefined] — нет: Распространение неопределенного в массиве против объекта
Вы не можете распространять undefined, но можете распространять пустой массив:
[...undefined] // doesnt work
[...[]] // works
Вы пытаетесь распространить undefined, что вызывает ошибку. Использовать ? [{}] : []
...(candidate.state.id === 2 ? [{
value: "Afspraak beheren",
onClick: () => {
this.openCandidateModel(candidate)
}
}] : undefined)
Я считаю, что проблема должна быть в этой части, поскольку вы не можете распространять undefined, вместо этого вы можете использовать пустой массив [ ].
Спасибо!
ну, я думаю, если ваш тернарный оператор приводит к
undefined, он не может распространяться. Попробуйте заключить undefined в скобки:[undefined]или вместо этого используйте[].