potapchino
@potapchino

Динамическое добавление атрибутов?

Пытаюсь сделать, что-то подобное:

есть переменная isLink, она либо true либо false

в зависимости от значения переменной, нужно рендерить либо
<div class="link">контент</div>
либо
<router-link to="/path" class="link">контент</router-link>


Пытался сделать так:
<component :is="isLink ? 'router-link' : 'div'" to="/path">


Но в итоге если isLink === false:
<div class="link" to="/path">контент</div>

Возможно как то динамически навесить атрибут на элемент в зависимсоит от условий?
  • Вопрос задан
  • 294 просмотра
Решения вопроса 2
Vlad_IT
@Vlad_IT
Front-end разработчик
Почему не сделать так?

<router-link to="/path" class="link" v-if"isLink">контент</router-link>
<div class="link" to="/path" v-else>контент</div>
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
в зависимости от значения переменной, нужно рендерить либо
<div class="link">контент</div>
либо
<router-link to="/path" class="link">контент</router-link>

Используйте v-if / v-else.

Ну или сделайте computed свойство:

<component v-bind="bullshit" class="link">контент</component>

computed: {
  bullshit() {
    const attrs = {};
    attrs.is = this.isLink ? 'router-link' : 'div';
    if (this.isLink) {
      attrs.to = '/path';
    }
    return attrs;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@deliro
Можно. Создай компонент из div'а
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы