javascript - 如何检测当前Vue实例中是否使用了vue-router?

标签 javascript vue.js vue-component vue-router vue-sfc

我想开发一个包含 vue.js 组件的库。该组件内部将包含导航元素。我希望它可以在有或没有 vue 路由器的情况下工作。在路由器模式下,它应该使用 <router-link>如果没有使用路由器,它应该返回标准 <a>标签。

<template>
       <div>
            <div v-if="vueRouterIsUsed">
                <router-link v-bind:to="url">Router link</router-link>
            </div>
            <div v-else>
                <a :href="url">No router</a>
            <div>
       </div>
</template>
<script>
    export default{
        props: {
            url: {
                type: String,
            }
        }
    }
</script>
  1. 如何检测当前Vue实例中是否使用了vue-router?
  2. 有没有比 if/else 更好的方法 <router-link><a>如果没有安装路由器,可以回退吗?

最佳答案

您可以检查创建(或安装)的生命周期钩子(Hook) this.$router 中的内容,您可以访问所有路由和路由器对象,这意味着您可以检查您需要的内容。在此基础上设置 isRouter 变量。

关于javascript - 如何检测当前Vue实例中是否使用了vue-router?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434433/

相关文章:

javascript - JsPlumb' : if source `div ` is child of `div` with `position:absolute` -> targed endpint wrong drawn

vue.js - 将 Vue Sfc 添加到现有项目

javascript - Vue.js 工作流程(从 Vue.js 1 到 2)

twitter-bootstrap - 如何在卡片组中添加链接?

javascript - 如何在 React 应用程序中实现谷歌地图搜索框

javascript - ReactJS:使用扩展元素来更新状态

javascript - 为什么 Chrome unsafeWindow 技巧不支持 XMLHttpRequest 发送覆盖?

webpack - Vue Js 2 将 CSS 包含到主 index.html 中

javascript - Javascript 中的 API 客户端

typescript - 如何在带有 Typescript 的 VueJs watch 中使用 Lodash debounce