javascript - 如何将此 if 语句转换为三元(javascript)
问题描述
我写了这个返回 jsx 元素(反应)的 if 语句,我是完整的三元(不仅是第二个范围内的那个:
jsx:
if (pageState === 'ready') {
return (
<>
<Particles className="particles" params={params} />
<Navigation isSignedIn={isSignedIn} onRouteChange={onRouteChange} />
{route === 'home'
? <>
<Rank name={this.state.user.name} entries={this.state.user.entries} />
<LinkForm inputChange={onInputChange} onSubmit={onSubmit} />
<ImageBox box={box} imageSrc={imageUrl} />
</>
: (
route === 'signin'
? <SignIn loadUser={loadUser} onRouteChange={onRouteChange} />
: <SignUp loadUser={loadUser} onRouteChange={onRouteChange} />
)
}
</>
)
} else if (pageState === 'loading') {
return (
<>
<Particles className="particles" params={params} />
<Loader />
</>
)
}
解决方案
我不推荐这个,因为它的可读性要差得多。此外,为了使用条件返回,您必须返回一些东西。所以你需要最后的“else”声明或继续你目前的方法。
return (pageState === 'ready') ?
(
<>
<Particles className="particles" params={params} />
<Navigation isSignedIn={isSignedIn} onRouteChange={onRouteChange} />
{route === 'home'
? <>
<Rank name={this.state.user.name} entries={this.state.user.entries} />
<LinkForm inputChange={onInputChange} onSubmit={onSubmit} />
<ImageBox box={box} imageSrc={imageUrl} />
</>
: (
route === 'signin'
? <SignIn loadUser={loadUser} onRouteChange={onRouteChange} />
: <SignUp loadUser={loadUser} onRouteChange={onRouteChange} />
)
}
</>
)
: (pageState === 'loading') ?
(
<>
<Particles className="particles" params={params} />
<Loader />
</>
)
: // You need a final 'else' condition
推荐阅读
- c++ - 如何返回派生自抽象类的类的对象?
- reactjs - 使用 env 文件反应构建
- python - 将多个子图绘制为动画
- mysql - 在 Laravel 中以一对多关系显示要查看的数据
- c# - 我有一个例外情况:将项目添加到组合框时出现 System.NullReferenceException
- powershell - 比较两个文件的内容并输出内容的差异以及行号
- reporting-services - 精确地在 SSRS 报告中移动像文本框这样的报告项?
- jenkins - 压缩詹金斯工作区文件夹中的所有文件
- mysql - MySQL order by before group by 不起作用
- java - 如何记录没有任何上下文的不安全请求?