vue <router-link> 不想作为链接工作,它显示为简单的文本。我做错了啥?

Posted

技术标签:

【中文标题】vue <router-link> 不想作为链接工作,它显示为简单的文本。我做错了啥?【英文标题】:The vue <router-link> don't want to work as a link, it shows as a simple text. What I'm doing wrong?vue <router-link> 不想作为链接工作,它显示为简单的文本。我做错了什么? 【发布时间】:2021-12-31 13:13:44 【问题描述】:

我在 laravel 项目中使用 vue js。我想让我的项目单页应用,所以需要vue路由。我安装了最新版本的vue-loader、vue-template-compiler、vue、vue-router,但问题依旧存在。

app.js

import bootstrap from 'bootstrap';

import createApp from "vue";
import  createRouter, createWebHistory  from 'vue-router'
import Login from './components/auth/Login.vue'
import Register from "./components/auth/Register";

window.$ = require( "jquery" );

const routes = [
    
        path: '/',
        name: 'Login',
        component: Login
    ,
    
        path: '/register',
        name: 'Register',
        component: Register
    
]

const router = createRouter(
    history: createWebHistory(process.env.APP_URL),
    routes
)

const app = createApp();
app.component('login', Login);
app.mount('#app');
export default router

vue.blade.php

<body>
<div id="app">
    <router-link to="/register">Harrison</router-link>
    <router-view> </router-view>
</div>

<script src="mix('js/app.js')"></script>
<script src=" asset('js/bootstrap.js') "></script>
</body>
</html>

我厌倦了在谷歌中搜索答案,没有任何帮助。你能帮我理解我做错了什么吗?

【问题讨论】:

我想你在刀片文件中添加了router-link 标签。它不适用于刀片文件。你必须为此创建 vue 文件。 【参考方案1】:

看起来app.js 没有注册 Vue Router 插件。要注册插件,请使用app.use():

// main.js
const router = createRouter(/*...*/)

const app = createApp(App)
app.use(router) ?
app.mount('#app')

也不需要从app.js导出路由器。

【讨论】:

【参考方案2】:

您需要创建一个 Vue 应用程序组件。假设这是一个名为 app.vue 的文件的内容:

<template>
    <router-link to="/register">Harrison</router-link>
    <router-view> </router-view>
</template>

<script>
export default 
  name: "App"

</script>

然后让你的 html 文件看起来像这样:

<body>
<div id="app"></div>

<script src="mix('js/app.js')"></script>
<script src=" asset('js/bootstrap.js') "></script>
</body>
</html>

最后,更改app.jsfile 中的一些行:

...
import App from "app.vue"
...
const app = createApp(App);
app.use(router);
...

然后它应该可以工作了。 (顺便说一句:你是在Vue2 还是Vue3?)

【讨论】:

以上是关于vue <router-link> 不想作为链接工作,它显示为简单的文本。我做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

router-link 绑定事件不生效

vue编程式路由实现新窗口打开

使用 vue- <router-link> 更改路由

Vue <router-link> 不可点击

带有<router-link>的自定义Vue库组件,如何同步路由器状态?

Laravel Vuejs [Vue 警告]:未知的自定义元素:<router-link>