我有一个根据用户成员资格状态呈现文本的组件,我想根据该属性值更改插值文本。除了使用 v-if
或 v-show
的一堆 div/p 标签之外,是否有更有效的方法根据 prop 显示不同的文本?
不断地有一堆堆叠的 div 只是大量的文本。
如有任何建议,我们将不胜感激!
干杯!
<script lang="ts" setup> import { PropType } from 'vue' const props = defineProps({ kind: { type: String as PropType<'subscribed' | 'unsubscribed'>, default: 'subscribed', }, planId: { type: String as PropType<'standard' | 'silver' | 'gold' | 'platinum' | 'diamond' | 'no plan'>, default: 'standard', }, }) </script> <template> <div class="c-promotion-plan-card" data-cy="component-promotion-plan-card"> <div class="flex items-baseline mb-sm"> <div v-if="planId === 'standard'" class="text-h6 text-dark">Standard Gang</div> <div v-if="planId === 'silver'" class="text-h6 text-dark">Silver Foxes</div> <div v-if="planId === 'gold'" class="text-h6 text-dark">Golden Girls</div> <div v-if="planId === 'platinum'" class="text-h6 text-dark">Platinum Boys</div> <div v-if="planId === 'diamond'" class="text-h6 text-dark">Diamond Dudes</div> <div v-if="planId === 'no plan'" class="text-h6 text-dark"> No Plan Posse </div> </div> </div> </template>
是的,有更好的方法。 您可以定义一个计算属性,例如 Vue2 语法
Vue3 语法
然后在模板内调用插值计算,例如
也许类似于以下代码片段(映射您的计划并使用计算属性):