javascript - 仅在满足条件时才渲染组件,否则显示 0
问题描述
我希望仅在条件为真时才显示组件,否则不显示任何内容。0
但在这种情况下,当条件不满足时,它显示为零。
这是代码:
const documents = [
{ types: [{}], value: 'good' },
{ types: [], value: 'bad' },
{ types: [{}, {}, {}], value: 'good' },
{ types: [{}], value: 'bad' }
];
const toCheck = 'good';
return (
documents.filter((a) => a.types.length && a.value === toCheck).length && (
<div>render this component</div>
)
);
当过滤器的结果大于零时,组件被渲染,当结果为 0 时,它显示一个 0。当条件不为真时,我不想显示任何内容。
如何实现?
解决方案
当条件不正确时,我什么都不显示。
0
当条件为假时,您的代码当前返回。要不渲染任何内容,您必须返回null
or false
:
return (
documents.filter((a) => a.types.length && a.value === toCheck).length
? <div>render this component</div>
: null
);
正如 Patrick Roberts 指出的那样,您可以而且应该使用some
而不是filter(...).length
. 没有理由构建一个新数组,并且some
具有在知道结果后立即停止的优势,并且您可以使用&&
输出,因为如果结果是false
,它将返回false
并且不呈现任何内容:
return (
documents.some((a) => a.types.length && a.value === toCheck)
&& <div>render this component</div>
);
推荐阅读
- java - 如何“同步”线程依次运行?
- discord.js - 如何检测何时提到机器人
- reactjs - react-i18next - 初始化后如何向 i18n 添加后端?
- ruby-on-rails - 覆盖设计控制器的 SessionsController#create 操作时如何设置标题?
- reactjs - .Net Core - React - TypeError:this.state.values.map 不是函数 - App.UseEndpoint
- ios - 如何使 SwiftUI 列表行背景颜色扩展整个宽度,包括安全区域之外
- docker - 我无法通过端口转发从公共 IP 访问 Docker 容器。我可以检查请求停止的位置吗?
- r - 如何为数据中的不同组添加单独的行号列?
- netlogo - NetLogo:使用 SDM 中“库存”的值作为 ABM 的输入
- python - Plotly y 轴表现滑稽