首页 > 解决方案 > 在 vuejs 中将旧代码修改为 vue router 4

问题描述

在 Vue Router 4 之前,我有以下标记:

<router-link
              :disabled="!ICanGo(item)"
              :tag="!ICanGo(item) ? 'span' : 'a'"
              :event="ICanGo(item) ? 'click' : ''"
              :to="{ name: 'editUsuario', params: { id: item.id } }"
>{{ item.nome }}</router-link>

使用 Vue Router 4,我现在收到以下警告:

[vue-router]
<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link. 

如何将此代码更改为 Vue Router 4 建议?

标签: javascriptvue.jsvue-router

解决方案


根据's的文档<router-link>v-slot,Vue Router 4 中的等价物是:

<router-link
  :to="{ name: 'editUsuario', params: { id: item.id } }"
  custom
  v-slot="{ href, navigate }"
>
  <span v-if="!ICanGo(item)">{{ item.nome }}</span>
  <a v-else :href="href" @click="navigate">{{ item.nome }}</a>
</router-link>

不需要禁用元素,!ICanGo(item)因为<span>在这种情况下它本身没有链接激活。

演示


推荐阅读