《Vue Router实战教程》8.命名视图

欢迎观看《Vue Router 实战(第4版)》视频课程

    1. 命名视图

有时候想同时 (同级) 展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar (侧导航) 和 main (主内容) 两个视图,这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。如果 router-view 没有设置名字,那么默认为 default。

<router-view class="view left-sidebar" name="LeftSidebar" />

<router-view class="view main-content" />

<router-view class="view right-sidebar" name="RightSidebar" />

一个视图使用一个组件渲染,因此对于同个路由,多个视图就需要多个组件。确保正确使用 components 配置 (带上 s):

const router = createRouter({

  history: createWebHashHistory(),

  routes: [

    {

      path: '/',

      components: {

        default: Home,

        // LeftSidebar: LeftSidebar 的缩写

        LeftSidebar,

        // 它们与 `<router-view>` 上的 `name` 属性匹配

        RightSidebar,

      },

    },

  ],

})

      1. 嵌套命名视图

我们也有可能使用命名视图创建嵌套视图的复杂布局。这时你也需要命名用到的嵌套 router-view 组件。我们以一个设置面板为例:

Nav 只是一个常规组件。

UserSettings 是一个视图组件。

UserEmailsSubscriptions、UserProfile、UserProfilePreview 是嵌套的视图组件。

注意:我们先忘记 HTML/CSS 具体的布局的样子,只专注在用到的组件上。

UserSettings 组件的 <template> 部分应该是类似下面的这段代码:

<!-- UserSettings.vue -->

<div>

  <h1>User Settings</h1>

  <NavBar />

  <router-view />

  <router-view name="helper" />

</div>

那么你就可以通过这个路由配置来实现上面的布局:

{

  path: '/settings',

  // 你也可以在顶级路由就配置命名视图

  component: UserSettings,

  children: [{

    path: 'emails',

    component: UserEmailsSubscriptions

  }, {

    path: 'profile',

    components: {

      default: UserProfile,

      helper: UserProfilePreview

    }

  }]

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值