vue.js - 如何对动态道具进行条件渲染
问题描述
我正在尝试在动态传递的道具上添加条件渲染。我有一个名为的组件card-item.vue
,它将 prop 传递cta
给 component profile.vue
。现在,profile.vue
我希望道具cta
显示在card-item
除第一个组件之外的每个组件上。
这是我的card-item.vue
:
<template>
<span v-if="cta">
{{ cta }}
</span>
</template>
<script>
export default {
name: 'card-item',
props: {
cta: {
type: String
}
}
}
</script>
个人资料.vue:
<template>
<CardItem
v-for="address in addresses.slice(1)"
:key="uniqueKey('address', address)"
:cta="cms.page.cta" // remove cta from the first address only
/>
</template>
<script>
import CardItem from "./card-item";
const data = require('./profile.json');
export default {
name: 'profile',
comonents: {
CardItem,
},
props: {
cms: {
type: Object,
default: () => {
return {
page: data
}
}
}
}
}
</script>
配置文件.json:
{
"cta": "Report"
}
在我的<CardItem />
组件中,我正在呈现地址。:cta
因此,除了第一个地址,我希望在每个地址上都有我的地址。
我正在尝试类似的东西:
v-if="addresses[0] ? {cta="null"} : "cms.page.cta""
我知道这是不正确的语法,但我正在努力实现。
请任何帮助将不胜感激。
解决方案
v-for 还支持可选的第二个参数作为当前项目的索引。--vue文档
<CardItem
v-for="(address, index) in addresses.slice(1)"
:key="uniqueKey('address', address)"
:cta="index !== 0 ? cms.page.cta : null" // remove cta from the first address only
/>
推荐阅读
- azure - 将域迁移到 Azure 后将 MS Outlook 邮箱添加到 AAD 用户
- javascript - 合并对象数组
- java - 确定一个比率以查看二叉搜索树在 java 中的平衡程度
- codeigniter - 如何将两列相乘并在codeigniter活动记录中求和?
- node.js - 运行繁重的预定 MongoDB 查询
- opengl - 如何处理 OpenGL 实现之间的差异
- swiftui - 在 macOS 上的 SwiftUI 中将颜色从源拖放到目标
- c - 在 K&R 字符计数示例的“C 编程语言”一书中
- flutter - 在带有颤振图的水平条形图上显示自定义目标线
- c++ - C++ 大数