Не могу найти правильное имя для названия, буду рад, если кто-то найдет лучшее имя.
У меня есть компонент, который представляет карточку продукта. Весь компонент обернут в <router-link>
, что приводит к странице продукта.
Однако у меня есть еще один случай, когда мне не нужен компонент для перехода на страницу продукта, а вместо этого мне нужно выполнить какое-то другое действие.
Единственное решение, которое я нашел, - передать функцию обратного вызова в качестве подпорки и, основываясь на этом, сделать что-то вроде:
<router-link v-if="!onClickCallback">
... here goes the whole component template ...
</router-link>
<div v-if="onClickCallback" @click="onClickCallback">
... here again goes the whole component template ...
</div>
Как я могу сделать это без копирования всего компонента? Я пытался сделать это (реальный пример кода):
<router-link class="clothing-item-card-preview"
:class="classes"
:style="previewStyle"
:to="{ name: 'clothingItem', params: { id: this.clothingItem.id }}"
v-on="{ click: onClick ? onClick : null }">
Однако я получил это: Invalid handler for event "click": got null
Плюс не уверен, что можно передать модификатор prevent
за клик, и это выглядит странно, должно быть лучшее архитектурное решение