javascript - 三元运算符中的更多值?
问题描述
我设置了一个导航组件,为登录的用户和登录的用户返回不同的导航设置。我需要为管理员用户再添加一个。我将为管理员提供另一个 const。我该怎么做呢?据我所知,三元运算符不允许我添加另一个值。
render() {
const { isAuthenticated } = this.props.auth;
const notLoggedIn = (
<div id='header'>
<div class='container-fluid'>
<div id='logo' class='pull-left'>
<h1>
<Link className='scrollto' to='/'>
The Sports Bet Leader
</Link>{' '}
</h1>
</div>
<nav id='nav-menu-container'>
<button
class='navbar-toggler'
type='button'
data-toggle='collapse'
data-target='#navbarNav'
aria-controls='navbarNav'
aria-expanded='false'
aria-label='Toggle navigation'
>
<span className='navbar-toggler-icon'></span>
</button>
<ul class='nav-menu'>
<li class='menu-active'>
<Link className='' to='/'>
Home
</Link>
</li>
<li>
<Link className='' to='/register'>
Register
</Link>{' '}
</li>
<li>
<Link className='' to='/login'>
Login
</Link>{' '}
</li>
</ul>
</nav>
</div>
</div>
);
const loggedIn = (
<div id='header'>
<div class='container-fluid'>
<div id='logo' class='pull-left'>
<h1>
<Link className='scrollto' to='/'>
The Sports Bet Leader
</Link>{' '}
</h1>
{/* <!-- Uncomment below if you prefer to use an image logo --> */}
{/* <a href="#intro"><img src="img/logo.png" alt="" title="" /></a> */}
</div>
<nav id='nav-menu-container'>
<button
class='navbar-toggler'
type='button'
data-toggle='collapse'
data-target='#navbarNav'
aria-controls='navbarNav'
aria-expanded='false'
aria-label='Toggle navigation'
>
<span className='navbar-toggler-icon'></span>
</button>
<ul class='nav-menu'>
<li class='menu-active'>
<Link className='' to='/'>
Home
</Link>
</li>
<li>
<Link className='' to='/dashboard'>
Picks
</Link>{' '}
</li>
<li>
<Link className='' onClick={this.logout} to='/'>
Logout
</Link>{' '}
</li>
</ul>
</nav>
</div>
</div>
);
return (
<div>
{isAuthenticated ? loggedIn : notLoggedIn}
</div>
);
}
}
解决方案
您可以嵌套条件运算符,尽管可读性可能会降低。例如,如果您创建一个adminLoggedIn
类似于loggedIn
and的片段notLoggedIn
,并且您有一个isAdmin
布尔变量,则可以使用以下语法:
return (
<div>
{
isAdmin
? adminLoggedIn
: isAuthenticated
? loggedIn
: notLoggedIn
}
</div>
);
不过,您可能更愿意避免使用条件运算符:
return (
<div>
{
(() => {
if (isAdmin) return adminLoggedIn;
if (isAuthenticated) return loggedIn;
return notLoggedIn;
})()
}
</div>
);
推荐阅读
- database - 如何从python中的文本数据中提取特征?
- pandas - 将数据框中的字典列表转换为单独的数据框
- python - 将矢量化数据提供给 keras
- c# - 将控件的属性设置为值
- google-cloud-platform - 更改 Google Cloud SQL 中的存储类型
- keras - 卷积自编码器如何学习多个类?(前数字数据)
- vb.net - 如何在 Richtextbox 中循环显示输出
- arrays - #value error mac excel 2016 数组公式
- javascript - IOS虚拟键盘遮挡页面底部文本框
- c# - 如何更改放置在 [FromBody] 属性内的对象的名称?