Has*_*IOU 7 javascript vue.js vue-component vuejs3 vue-composition-api
当我async setup ()在 Vue 3 中使用时,我的组件消失了。我使用了这里找到的解决方案:
Why i got Blank when use async setup() in Vue3 ...它有效,但是当我使用router-view.
<template>
<div v-if="error">{{error}}</div>
<Suspense>
<template #default>
<router-view></router-view>
</template>
<template #fallback>
<Loading />
</template>
</Suspense>
</template>
<script>
import Loading from "./components/Loading"
import { ref, onErrorCaptured } from "vue"
export default {
name: 'App',
components: { Loading },
setup() {
const error = ref(null)
onErrorCaptured(e => {
error.value = e
})
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
main.js:
import { createApp } from 'vue'
import router from "./router"
import App from './App.vue'
createApp(App).use(router).mount('#app')
Run Code Online (Sandbox Code Playgroud)
当我更换router-view一个组件时,它就会出现。
路由器:
import { createWebHistory, createRouter } from "vue-router";
import Portfolio from "@/views/Portfolio.vue";
import Blog from "@/views/Blog/Blog.vue";
import Detail from "@/views/Blog/Detail.vue";
import NotFound from "@/views/NotFound.vue";
const routes = [
{
path: "/",
name: "Home",
component: Portfolio,
},
{
path: "/blog",
name: "blog",
component: Blog,
},
{
path: "/blog/:slug",
name: "detail",
component: Detail,
},
{
path: "/:catchAll(.*)",
component: NotFound,
},
];
const router = createRouter({
history: createWebHistory(),
routes,
});
export default router;
Run Code Online (Sandbox Code Playgroud)
<Suspense>的默认模板应包含一个异步组件(即带有 的组件async setup()),但您已将其放入<router-view>其中。
您必须将 重构为包含异步组件的<Suspense>自己的包装组件(例如, ),将其自身保留在:HomeView.vue<router-view>App
<!-- App.vue -->
<template>
<router-view />
</template>
<!-- HomeView.vue -->
<template>
<Suspense>
<template #default>
<MyAsyncComponent />
</template>
<template #fallback>
<Loading />
</template>
</Suspense>
</template>
Run Code Online (Sandbox Code Playgroud)
然后更新您的路由器配置以使用该包装器:
const routes = [
{
path: '/'
name: 'Home',
component: HomeView
},
//...
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5220 次 |
| 最近记录: |