Skip to main content

在 Vue template 內生成換行的方式

在 Vue 中,父元件 props 進到子元件的 String,希望可以自行決定何處需換行,但需避免使用 <br>

解決方式

props 進子元件的 String

<script setup>
const displayText1 = "Lorem ipsum dolor sit amet, \n\n consectetur adipiscing elit.";
const displayText2 = `
Lorem ipsum
Lorem ipsum
`;
</script>

Vue template:

<template>
<pre>
{{ props.displayText }}
</pre>
</template>

CSS 屬性:

<style scoped>
pre {
white-space: pre-line;
}
</style>

心得

當初接到的需求是,某些傳進子元件的字串可能會由非工程師的同仁編輯,且有特定的換行需求。

查找了網路後,最後選定套用上述方式,大方向是想盡量避免使用 <br> 和 JS 來處理換行,欲運用最少的資源來處理。發現可以使用 <pre> 搭配 CSS 處理,覺得滿很有趣的。

在之前的開發經驗中,幾乎沒有使用過 <pre>,意外有種發現新大陸的感覺。一個問題可以有非常多不同的處理方式,每一種方案都需要取捨,就看產品需求和最想避免的坑是什麼而定了。

參考資料

相關屬性解釋可參考: