【发布时间】:2017-08-23 06:26:33
【问题描述】:
如何检查 javascript 对象项是否有键,如果存在则渲染元素。
这是我的 javascript 对象,然后对其进行解析,并将每个 item 制成一个引导列表项。在items.title = Groups 下,还有一个附加键"dropdown": "true",这是我要为其创建下拉菜单的元素。
var linksNav = {
items: [
{
"type": "heading",
"title": "News",
"href": "#",
"target": "_self"
},
{
"type": "link",
"title": "People",
"href": "#",
"target": "_self"
},
{
"type": "link",
"title": "Events",
"href": "#",
"target": "_self"
},
{
"type": "link",
"title": "Groups",
"href": "#",
"target": "_self",
"dropdown": "true"
},
{
"type": "heading",
"title": "Capabilities",
"href": "#",
"target": "_self"
},
{
"type": "link",
"title": "Initiatives",
"href": "#",
"target": "_self"
},
{
"type": "link",
"title": "Who we are",
"href": "#",
"target": "_blank"
},
]
}
这是我的代码(不起作用),如果该菜单项存在该键,则尝试有条件地呈现下拉列表(<NavSub /> 标记)。
我得到的结果是我的每个列表项的下拉菜单是<div>Nothing</div>。其他一切都正常显示,所以我认为我的条件语句有问题。
render: function() {
let dropdownMenu;
if (this.props.dropdown=="true") {
dropdownMenu = (<Navsub />)
} else {
dropdownMenu = (<div>Nothing</div>)
}
return (
<li className={this.props.title + ' nav-items'}>
<a href={this.props.href} target={this.props.target} className={this.state.color + ' dropdown-toggle'} onClick={this.onClick} data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{this.props.title}</a>
//I want to conditionall render this dropdown menu
<ul className="dropdown-menu fade">
{dropdownMenu}
</ul>
</li>
);
}
【问题讨论】:
-
“那行不通” 究竟什么行不通?你有错误吗?还是不是您期望的输出?如果是这样,你得到了什么,你期望什么?
-
“什么都没有显示” 您在示例中创建的所有元素都不可见(例如链接)?或者你的意思是只有
<ul className="dropdown-menu fade">元素是空的?如果你真的没有得到任何输出,你会得到错误吗?如果是,错误是什么?请阅读How to Ask 和minimal reproducible example。 -
已编辑。不是我预期的输出,但我又是新手。
-
@Snorlax 发布问题时,请关注实际与预期的行为和错误消息
I expected the screen to display A,B,C but it displays DEF instead (or I get a JS error: "blah blah blah") -
您在组件中收到什么作为道具。能否在渲染中使用 console.log(this.props) 并分享结果
标签: javascript html twitter-bootstrap reactjs