VueJS 路由器:$route 未定义

Posted

技术标签:

【中文标题】VueJS 路由器:$route 未定义【英文标题】:VueJS Router: $route is not defined 【发布时间】:2018-07-05 07:09:10 【问题描述】:

这是我的组件:

const Vue = require("vue/dist/vue.js");
const qs = require("querystring");

module.exports = Vue.component("Page",function(resolve)
    console.log($route);
    let id = this.$route.params.id;
    fetch("/getPage.json",
        method:"POST",
        body:qs.stringify(
            id
        )
    ).then(r=>r.json())
    .then(j=>
        console.log(j);
        resolve(
            template:`<h1>`+JSON.stringify(j)+"</h1>"
        );
    )
);

这是我的路由器:

const router = new VueRouter(
	mode:"history",
	routes:[
		
			path:"/",
			component:Home
		,
		
			path:"/me",
			component:Me
		,
		
			path:"/create-page",
			component:createPage
		,
		
			path:"/p/:id",
			component:Page
		
	]
);
Vue.use(VueRouter);

当我运行这个应用程序时,我得到:

ReferenceError: $route is not defined

我尝试使用this.$route,但它不起作用。我正在使用箭头功能。当我这样做时,它会起作用:

const Vue = require("vue/dist/vue.js");

module.exports = Vue.component("Page",function(resolve)
  resolve(
    template:`<h1>$route.params.id`
  );
);

请帮我弄清楚如何解决这个问题。

【问题讨论】:

【参考方案1】:

在你的主 vue 应用中

new Vue(...)

你必须先使用 vue-router

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
...
new Vue(...)
...

然后继续声明路由

【讨论】:

我正在使用Vue.use(VueRouter)【参考方案2】:

您忘记在Vue 实例中添加router

在你的 main.js 或 app.js 或 index.js(入口点)

const app = new Vue(
  router
)

documentation

【讨论】:

【参考方案3】:

你不应该使用箭头函数

data: function() 
    return 
      usertype: this.$route.params.type
    ;
  ,

这对我有用。

【讨论】:

以上是关于VueJS 路由器:$route 未定义的主要内容,如果未能解决你的问题,请参考以下文章

Vuejs,当我在商店模块中访问它时,为啥 this.$store.state.route.params.activityId 未定义

VueJS路由器查看反应道具未定义

VueJS 3 / 路由器 / 带有推送的重定向:未捕获(承诺中)类型错误:无法读取未定义的属性(读取“推送”)

Laravel 表单路由未定义

为啥设置方法中的“route.params.id”不可用/未定义?

路由 [verification.resend] 未定义