javascript - 使用 React,如何编写更友好和更清晰的条件渲染给定以下内容
问题描述
在我的 React 16 应用程序中,我有以下渲染函数:
render() {
const {
isLoading,
leverJobData,
isApiError
} = this.state;
return (
<Openings.Container>
<Openings.StyledH4>Open roles:</Openings.StyledH4>
{isLoading && <h4>Loading...</h4>}
{!isLoading && isApiError && <h4>Something went wrong. Please try again later!</h4>}
{!isLoading && !isApiError && leverJobData.length === 0 && (
<h4>There are no openings at this time.</h4>
)}
{!isLoading && !isApiError && leverJobData.length > 0 && (
<>{this.renderJobOpenings(leverJobData)}</>
)}
</Openings.Container>
);
}
是否有更简洁的方法来编写上述内容,或者这是在 React 中进行条件渲染的正确方法?
解决方案
当我有这样的块时,我喜欢打破条件并准确描述它们在做什么。例如:
render() {
const {
isLoading,
leverJobData,
isApiError
} = this.state;
const hasError = !isLoading && isApiError;
const noJobsAvailable = !isLoading && !isApiError && leverJobData.length === 0;
const hasJobsAvailable = !isLoading && !isApiError && leverJobData.length > 0;
return (
<Openings.Container>
<Openings.StyledH4>Open roles:</Openings.StyledH4>
{isLoading && <h4>Loading...</h4>}
{hasError && <h4>Something went wrong. Please try again later!</h4>}
{noJobsAvailable && <h4>There are no openings at this time.</h4>}
{hasJobsAvailable && this.renderJobOpenings(leverJobData)}
</Openings.Container>
);
}
推荐阅读
- r - 有没有办法改变灵活表标题的字体大小?
- vba - 由于占位符文本,无法修改内容控件中的文本
- firebase - 如何使用带有平台、steam_id、event_name 过滤器的 bigquery 在 power bi 中编写查询以查找过去 28 天的 firebase 事件详细信息?
- reactjs - 材质 UI 半星评级未正确显示
- apache-spark - 在气流 (1**.1*.0.35) 中运行来自不同集群 (1**.1*.0.21) 的 Spark 提交程序。如何在气流中远程连接其他集群
- ruby-on-rails - 活动作业未在数据库导轨中保存数据
- ibm-mq - 什么是 IBM MQ 节?
- java - 让一个android服务长时间运行
- python - 熊猫数据框按类和时间戳分组
- jquery - 如何保存从 Quill 工具箱上传的图像