使用 <router-link> 与 vue-custom-element
Using <router-link> with vue-custom-element
我是 Vue 的新手,我正在尝试创建一个可以嵌入到非 Vue 应用程序中的 Vue 应用程序,所以我使用的是 vue-custom-element。我在让路由在我的 Vue 应用小部件内部工作时遇到问题。
我的应用程序中有两个组件 - 学校和学校。
在 main.js 我有这个:
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import vueCustomElement from 'vue-custom-element'
import Schools from "./components/Schools";
import School from "./components/Schools";
Vue.use(vueCustomElement);
const router = new VueRouter({
routes: [
{ path: '/', component: Schools },
{ path: '/school', component: School },
]
})
App.router = router;
Vue.customElement('schools-widget', App)
然后在我的学校部分 (Schools.vue) 我有
<router-link to="/school">School</router-link>
我希望 link 我从我的学校组件到我的学校组件。
但是我得到了错误
Unknown custom element: <router-link> - did you register the component correctly?
我做错了什么?
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import Schools from "./components/Schools";
import School from "./components/Schools";
const router = new VueRouter({
routes: [
{ path: '/', component: Schools },
{ path: '/school', component: School },
]
})
new Vue({
router,
render: (h) => h(App),
}).$mount('#app');
我觉得你的代码应该是这样的。
您应该像这样将路由器注入组件:
Vue.customElement('schools-widget', {
router,
render: h => h(App)
});
更新一:
刚刚发现你忘记安装Vue路由插件了:
Vue.use(VueRouter)
我是 Vue 的新手,我正在尝试创建一个可以嵌入到非 Vue 应用程序中的 Vue 应用程序,所以我使用的是 vue-custom-element。我在让路由在我的 Vue 应用小部件内部工作时遇到问题。
我的应用程序中有两个组件 - 学校和学校。
在 main.js 我有这个:
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import vueCustomElement from 'vue-custom-element'
import Schools from "./components/Schools";
import School from "./components/Schools";
Vue.use(vueCustomElement);
const router = new VueRouter({
routes: [
{ path: '/', component: Schools },
{ path: '/school', component: School },
]
})
App.router = router;
Vue.customElement('schools-widget', App)
然后在我的学校部分 (Schools.vue) 我有
<router-link to="/school">School</router-link>
我希望 link 我从我的学校组件到我的学校组件。
但是我得到了错误
Unknown custom element: <router-link> - did you register the component correctly?
我做错了什么?
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import Schools from "./components/Schools";
import School from "./components/Schools";
const router = new VueRouter({
routes: [
{ path: '/', component: Schools },
{ path: '/school', component: School },
]
})
new Vue({
router,
render: (h) => h(App),
}).$mount('#app');
我觉得你的代码应该是这样的。
您应该像这样将路由器注入组件:
Vue.customElement('schools-widget', {
router,
render: h => h(App)
});
更新一: 刚刚发现你忘记安装Vue路由插件了:
Vue.use(VueRouter)