之前在学 React 的时候了解过 portal,简单的来说就是可以将子组件渲染到父组件以外的地方。官网上说 portal 的典型用例是当父组件有overflow: hidden
或z-index
样式时,但你需要子组件能够在视觉上“跳出”其容器。例如,对话框、悬浮卡以及提示框。
但是当时对此例并无太多感觉,这就导致了我一度以为这是个没什么卵用的 API,大多数的使用场景应该是在封装一些公共组件上。但是近期遇到的一个需求,却确确实实出现了能够使用这个 API 的场景。
做过后台管理系统都知道,一个后台管理系统中,最基础的结构就是布局。而我们的各个业务页面基本都是在布局中显示的,通过布局中的侧边栏/标签栏/面包屑进行页面切换。
而这些通过 vue 实现基本上都是用 vue-router。如下面两个页面:
import Layout from '@/layout'
export default [
{
name: 'Admin',
path: '/admin',
component: Layout,
redirect: '/admin/role',
meta: {
title: '后台管理', icon: 'el-icon-monitor' },
ch