Vue3 Props v-if 同步
Vue3 Props v-if sync
我在用vue做道具,v-if不行,我想知道我做的函数有没有写对。
我希望道具中的数据同步工作。我犯了什么错误?
vue props 在启动时检查哪些功能?
<my-alert type="warning" appearance="outline" showIcon="false">Hello</my-alert>
myAlert.vue
<template>
<div class="block" :class="[typeClass,appearanceClass]">
<div class="alert-icon" v-if="myIcon">
<i>ICON</i>
</div>
</div>
</template>
<script>
const types =
['primary','accent','warn','basic','info','success','warning','error',
];
const appearances =
['border','accent','fill','outline','soft'];
import {defineComponent} from "vue";
import {computed} from "vue";
export default {
props: {
type: {
type: String,
default: 'primary',
required: true,
validator: value => {
return ['primary', 'accent', 'warn', 'basic', 'info', 'success', 'warning', 'error'].includes(value)
}
},
appearance: {
type: String,
default: 'border',
required: true,
validator: value => {
return ['border', 'accent', 'fill', 'outline', 'soft'].includes(value)
}
},
showIcon: {
default: false
}
},
computed: {
typeClass() {
return 'alert-type-' + this.type
},
appearanceClass() {
return 'alert-appearance-' + this.appearance
},
myIcon() {
return this.showIcon;
}
}
}
</script>
从你的代码中我可以看到,你正在像这样传递道具 shwoIcon showIcon="false"
,这是静态传递,最终将假值作为字符串“false”而不是布尔值传递。所以使用这样的道具 :shwoIcon="false"
我的意思是在 showIcon 之前使用冒号使道具动态。 link
并且在您的 my-alert
组件中,showIcon prop 的 declear 类型是更好的做法
showIcon: {
type: Boolean,
default: false,
},
另一种方法是,只需更改计算的 属性 myIcon()
即可检查字符串道具值,如下所示,
myIcon() {
return this.showIcon === "true";
}
我在用vue做道具,v-if不行,我想知道我做的函数有没有写对。 我希望道具中的数据同步工作。我犯了什么错误?
vue props 在启动时检查哪些功能?
<my-alert type="warning" appearance="outline" showIcon="false">Hello</my-alert>
myAlert.vue
<template>
<div class="block" :class="[typeClass,appearanceClass]">
<div class="alert-icon" v-if="myIcon">
<i>ICON</i>
</div>
</div>
</template>
<script>
const types =
['primary','accent','warn','basic','info','success','warning','error',
];
const appearances =
['border','accent','fill','outline','soft'];
import {defineComponent} from "vue";
import {computed} from "vue";
export default {
props: {
type: {
type: String,
default: 'primary',
required: true,
validator: value => {
return ['primary', 'accent', 'warn', 'basic', 'info', 'success', 'warning', 'error'].includes(value)
}
},
appearance: {
type: String,
default: 'border',
required: true,
validator: value => {
return ['border', 'accent', 'fill', 'outline', 'soft'].includes(value)
}
},
showIcon: {
default: false
}
},
computed: {
typeClass() {
return 'alert-type-' + this.type
},
appearanceClass() {
return 'alert-appearance-' + this.appearance
},
myIcon() {
return this.showIcon;
}
}
}
</script>
从你的代码中我可以看到,你正在像这样传递道具 shwoIcon showIcon="false"
,这是静态传递,最终将假值作为字符串“false”而不是布尔值传递。所以使用这样的道具 :shwoIcon="false"
我的意思是在 showIcon 之前使用冒号使道具动态。 link
并且在您的 my-alert
组件中,showIcon prop 的 declear 类型是更好的做法
showIcon: {
type: Boolean,
default: false,
},
另一种方法是,只需更改计算的 属性 myIcon()
即可检查字符串道具值,如下所示,
myIcon() {
return this.showIcon === "true";
}