如何在同一模块中实现模板文字块?
How to implement blocks of template literals in the same module?
考虑一个包含 HTML
代码的 module.exports
模板。该模块采用两个数据参数。这是代码示例:
module.exports = (data, d) => {
return `
<div class='modal-dialog modal-md' role='document'>
<div class='modal-content'>
<h3 class='text-center'>${d.nombre}</h3>
</div>
<div class='row'>
${data.map((t) => {
return `
<div class='thumbnail'>
</div>
`;
})}
</div>
</div>
`
}
我正在使用两个不同的模板文字块,一个用于 d
数据集,另一个用于 data
参数,需要 map
方法才能获取数据。
然而,当数据在 array
中有两个或多个项目时,我在每个 div
之间得到了一种 ,
。
我得到了这个输出:
我尝试使用 yo-yo
模块并在不同的文件中写入 map
方法,但我没有得到不同的结果。
使用两个模板文本块是一个好习惯,还是我遗漏了一些可以避免此输出的内容?
map
方法 returns 一个数组,当您将其结果嵌入模板字符串时,该数组会隐式转换为字符串,默认情况下会在数组元素之间添加逗号。
解决方案:链 a .join('')
:
${data.map((t) => {
return `
<div class='thumbnail'>
</div>
`;
}).join('')}
因为您使用的是模板文字,所以您的数组在您的地图之后被强制转换为一个字符串(您没有使用 jsx)。看看在数组上调用 toString 时会发生什么(它用逗号连接):
console.log( [1,2].toString() );
要在您的特定情况下停止此行为,请在地图后的数组上调用 .join()
:
${
data.map((t) => `<div class='thumbnail'></div>`)
.join('');
}
考虑一个包含 HTML
代码的 module.exports
模板。该模块采用两个数据参数。这是代码示例:
module.exports = (data, d) => {
return `
<div class='modal-dialog modal-md' role='document'>
<div class='modal-content'>
<h3 class='text-center'>${d.nombre}</h3>
</div>
<div class='row'>
${data.map((t) => {
return `
<div class='thumbnail'>
</div>
`;
})}
</div>
</div>
`
}
我正在使用两个不同的模板文字块,一个用于 d
数据集,另一个用于 data
参数,需要 map
方法才能获取数据。
然而,当数据在 array
中有两个或多个项目时,我在每个 div
之间得到了一种 ,
。
我得到了这个输出:
我尝试使用 yo-yo
模块并在不同的文件中写入 map
方法,但我没有得到不同的结果。
使用两个模板文本块是一个好习惯,还是我遗漏了一些可以避免此输出的内容?
map
方法 returns 一个数组,当您将其结果嵌入模板字符串时,该数组会隐式转换为字符串,默认情况下会在数组元素之间添加逗号。
解决方案:链 a .join('')
:
${data.map((t) => {
return `
<div class='thumbnail'>
</div>
`;
}).join('')}
因为您使用的是模板文字,所以您的数组在您的地图之后被强制转换为一个字符串(您没有使用 jsx)。看看在数组上调用 toString 时会发生什么(它用逗号连接):
console.log( [1,2].toString() );
要在您的特定情况下停止此行为,请在地图后的数组上调用 .join()
:
${
data.map((t) => `<div class='thumbnail'></div>`)
.join('');
}