Vue Router 命名视图

命名视图

命名视图

同时(同级)展示多个视图,而不是嵌套展示,可以使用命名视图。

可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。

如果<router-view>没有设置名字,那么默认为default

说到这里,插一个题外话。由vue-cli脚手架生成的文件目录,可以看到views和components中都放置vue组件。那么有什么区别?

两个文件夹都放置vue组件,但某些vue组件充当路由视图。components中的vue组件不太可能在路由中使用(路由配置),而views中的vue组件至少由一条路由使用

<div id="app">
    <router-view></router-view>
    <router-view name="LeftSidebar"></router-view>
    <router-view name="RightSidebar"></router-view>
  </div>
{
        path: '/',
        name: 'Home',
        components: {
            default: () => import('@/views/Home'),
            LeftSidebar: () => import('@/views/LeftSidebar'),
            RightSidebar: () => import('@/views/RightSidebar')
        }
    }

访问/路径时映射到对应路由,根据<router-view>有无name,具体name名来渲染不同组件。

一个视图使用一个组件渲染,因此对于同个路由,多个视图就需要多个组件。

嵌套命名视图

使用命名视图创建嵌套视图。

UserSettings.vue:

<router-view></router-view>
<router-view name="helper"></router-view>

router.js:

{
        path: '/settings',
        components: UserSettings,
        children: [
            {
                path: 'emails',
                component: UserEmailsSubscriptions
            },
            {
                path: 'profile',
                components: {
                    default: UserProfile,
                    helper: UserProfilePreview
                }
            }
        ]
    }

通过/settings路径映射到组件UserSettings,UserSettings有两个视图,一个默认视图一个命名视图,通过/settings/后面的内容找到对应嵌套路由中的组件。

如果是路径/settings/emails,则先通过/settings加载UserSettings,再通过/emails加载UserEmailsSubscriptions到默认视图中,因为并没有在/emails的路由中找到嵌套视图的配置,所以命名视图的位置并不渲染任何组件。

posted @ 2021-10-15 22:19  慕斯星球  阅读(384)  评论(0)    收藏  举报