javascript - ES6 模板文字:如何添加条件多行并删除额外的缩进?
问题描述
我需要基于一些有条件地在 ES6 模板文字中添加多行conditions
,并在每一行上删除额外的缩进。
代码:
const reactComponentJSX = `
${condition1? '<Menu/>' : ''}
${condition2? '<p>Welcome to my app</p>' : ''}
${condition3? '<Body/>' : ''}
${condition4? '<h1>Good bye</h1>' : ''}
`;
实际输出:
让我们假设条件 1 和条件 4 为假,因此将打印以下 JSX。
// unnecessary new line
// unnecessary new line
<p>Welcome to my app</p>
// unnecessary new line
<h1>Good bye</h1>
注意每个非空行中不必要的缩进。
预期输出:
显示没有缩进的行,并且不打印错误条件的新行。
<p>Welcome to my app</p>
<h1>Good bye</h1>
注意:我正在为JSX文件编写模板。所以,你可以将问题陈述视为在render函数中条件写入JSX标签,在JSX文件中条件导入库等
解决方案
// dummy conditions and texts
const conditions = (new Array(10)).fill().map(() => Math.random() < 0.5);
const components = (new Array(10)).fill().map((_,i) => `<Component${i}/>`);
// create your content with map and join
const content = conditions
.map((condition, i) => condition ? components[i]+'\n' : null)
.filter(template => template !== null)
.join('')
console.log(content);
推荐阅读
- android - 重置/清除视图模型或实时数据
- spring-webflux - 使用 WebFlux 执行两次环绕注释
- c++ - 如何使用while循环c ++计算输入值?
- linux - 假设一个 Linux 机器有一个巨大的磁盘缓存,它对应用程序缓冲写入的性能有很大的好处吗?
- reactjs - 如何将 NFC 标签中保存的 URL 重定向到我将从我的 react-native 应用程序控制的另一个 URL?
- c++ - C++ 静态成员变量在单个进程中是否有不同的实例?
- qt - 如何调试 IDataObject 实现?
- highcharts - 将 Highcharts 时间线的 dataLabels 全部移到一侧
- python - Pytorch LSTM - 单时间步输入与整个序列输入 - 不同的结果
- javascript - 使用 Jest 在 Promise catch 中测试异步抛出错误