Есть две вещи, которые вам нужно осознать. В Vue вызов компонента с <my-component has-this-prop />
это то же самое, что вызов компонента с <my-component :has-this-prop="true" />
. Логическое значение в основном переключает опору.
Вы также можете динамически изменять, какие реквизиты связаны с компонентом, используя синтаксис v-bind
без имени реквизита, как указано в документации .
Это означает, что если в родительском компоненте есть реквизит side
, который всегда содержит правильную сторону, вы можете создать вычисляемое свойство, содержащее все реквизиты, которые вы хотите передать, а затем использовать v-bind
на вашем v-tooltip
для передачи реквизита:
<template>
<v-tooltip v-bind="tooltipProps">
<!-- Something -->
</v-tooltip>
</template>
<script>
const validSides = [
'top',
'top left',
'top center',
'top right',
// you get the idea
];
export default {
props: {
side: {
type: String,
default: 'top',
validator(prop) {
return validSides.contains(prop);
}
}
},
computed: {
tooltipProps() {
if (!validSides.contains(this.side)) {
return {};
}
const propsNames = this.side.split(' ');
const props = {};
for (const propName of propsNames) {
props[propName] = true;
}
return props;
}
}
}
</script>