javascript - 条件对象作为数组值
问题描述
我正在尝试实现以下目标:
在 React 中,我有一个组件,其中一个 prop 采用一个带有对象的数组,然后该组件在下拉菜单项中显示这些对象。
我想有条件地制作一些这些下拉菜单项。换句话说:一些用户可能会看到一个下拉项目,而其他用户则不会。
实现这一目标的正确方法是什么?我尝试使用扩展运算符(根据此Answer,但我不断收到错误 消息
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)
]}
/>
解决方案
您正在尝试传播undefined
. candidate.state.id !== 2
将其更改为:
...(candidate.state.id === 2 ? [{
value: "Afspraak beheren",
onClick: () => {
this.openCandidateModel(candidate)
}
}] : [])
此外,可能值得一提的{...undefined}
是有效但[...undefined]
不是:Spreading undefined in array vs object
推荐阅读
- data-visualization - Oracle 用于数据可视化的各种选项/工具
- javascript - 当一个proto obj由defineProperty定义时,具有相同属性的hasOwnProperty会出错,为什么?
- python - 如何构建神经网络模型以在 python 中对数据进行分类
- sql - 在 Postgresql 中捕获存储过程的日志记录
- c# - [C#]Response.write 在使用线程时不起作用
- docusignapi - DocuSign - JWT 用户令牌错误同意_必需(php sdk)
- java - 获取“运算符'&&'不能应用于'布尔','int'”错误,我不确定为什么
- android - Android改造:我想每天在特定时间或每天一次更新或刷新数据,成功检索数据 Nd也可以在本地离线工作
- c# - MongoDB c#驱动程序 - 同时提交多个不同的查找查询
- css - 三.js画布在绝对位置不可见