reactjs - 如何有条件地在 React 中显示?
问题描述
我正在开发一个应用程序来显示 NFL 每周的日程安排。下面的代码有效,但我如何有条件地渲染天数?例如,只有一周有周六的比赛。此外,上周只有周日比赛。
return (
<div>
<h2>Thursday</h2>
{Thursday.map((teams) => (
<p>
Week {weekNo + 1} at {teams.schedule[weekNo].time}: {teams.nickname}{" "}
vs.
{teams.schedule[weekNo].opponent}{" "}
</p>
))}
<h2>Saturday</h2>
{Saturday.map((teams) => (
<p>
Week {weekNo + 1} at {teams.schedule[weekNo].time}: {teams.nickname}{" "}
vs.
{teams.schedule[weekNo].opponent}{" "}
</p>
))}
<h2>Sunday</h2>
{Sunday.map((teams) => (
<p>
Week {weekNo + 1} at {teams.schedule[weekNo].time}: {teams.nickname}{" "}
vs.
{teams.schedule[weekNo].opponent}{" "}
</p>
))}
<h2>Monday</h2>
{Monday.map((teams) => (
<p>
Week {weekNo + 1} at {teams.schedule[weekNo].time}: {teams.nickname}{" "}
vs.
{teams.schedule[weekNo].opponent}{" "}
</p>
))}
</div>
);
};
解决方案
在您的情况下,我将创建一个功能组件以防止代码重复(如果没有计划显示,此组件将返回 null,因此该组件不会呈现任何内容)
function DaySchedule({day, teams, weekNo}) {
if (!teams.length) {
return null;
}
return (
<>
<h2>{day}</h2>
{teams.map(team => (
<p>
{`
Week ${weekNo + 1} at ${team.schedule[weekNo].time}:
${team.nickname} vs. {team.schedule[weekNo].opponent}
`}
</p>
))}
</>
);
}
然后你可以像这样使用组件:
return (
<div>
<DaySchedule day="Thursday" teams={Thursday} weekNo={weekNo}/>
<DaySchedule day="Saturday" teams={Saturday} weekNo={weekNo}/>
<DaySchedule day="Sunday" teams={Sunday} weekNo={weekNo}/>
<DaySchedule day="Monday" teams={Monday} weekNo={weekNo}/>
</div>
);
推荐阅读
- python - Spyder 版本 4.2.3 在 Mac、OS Big Sur 上滞后
- plotly - dcc.Graph 子图的 extendData
- regex - 在正则表达式中,是否可以使用变量名而不是纯字符串?
- ruby-on-rails - 如何在 ruby/rails 中做出响应?
- xml - 如何使用 Azure APIM 创建 OCSP 请求并验证响应?
- dom-events - 自定义选项卡关闭时是否会触发任何 JavaScript 事件?
- node.js - 如何使用 vuejs express 和 axios 上传文件
- javascript - 如何在另一个规则集中调用一个规则集?
- google-cloud-platform - 活动的 Google Cloud Scheduler 未触发 PubSub 事件
- javascript - vue.js:模板部分中的处理扩展运算符