Cir*_*ker 9 javascript vue.js vue-router vuejs3 vue-router4
在 Vue 3 中,我创建了以下Home组件,另外 2 个组件(Foo和Bar),并将其传递给vue-router如下所示。的Home分量是利用Vue公司的创建的component功能,而Foo与Bar组件使用纯对象创建。
我得到的错误:
Component is missing template or render function.
在这里,Home组件导致了问题。我们不能将 的结果传递component()给路由对象vue-router吗?
<div id="app">
<ul>
<li><router-link to="/">Home</router-link></li>
<li><router-link to="/foo">Foo</router-link></li>
<li><router-link to="/bar">Bar</router-link></li>
</ul>
<home></home>
<router-view></router-view>
</div>
<script>
const { createRouter, createWebHistory, createWebHashHistory } = VueRouter
const { createApp } = Vue
const app = createApp({})
var Home = app.component('home', {
template: '<div>home</div>',
})
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Home },
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar },
],
})
app.use(router)
app.mount('#app')
</script>
Run Code Online (Sandbox Code Playgroud)
在codeandbox 中查看问题。
小智 22
对于 vue-cli vue 3
createApp 中缺少渲染函数。当使用 createApp 函数设置您的应用程序时,您必须包含包含 App 的渲染函数。
在 main.js 中更新为:
首先 将 javascript 中的第二行更改为:-
const { createApp } = Vue
Run Code Online (Sandbox Code Playgroud)
到以下几行:
import { createApp,h } from 'vue'
import App from './App.vue'
Run Code Online (Sandbox Code Playgroud)
第二
更改自:-
const app = createApp({})
Run Code Online (Sandbox Code Playgroud)
到:
const app = createApp({
render: ()=>h(App)
});
app.mount("#app")
Run Code Online (Sandbox Code Playgroud)
ton*_*y19 10
当app.component(...)提供定义对象(第二个参数)时,它返回应用程序实例(以允许链接调用)。要获取组件定义,请省略定义对象并仅提供名称:
app.component('home', { /* definition */ })
const Home = app.component('home')
const router = createRouter({
routes: [
{ path: '/', component: Home },
//...
]
})
Run Code Online (Sandbox Code Playgroud)