LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Vue3 Teleport

介绍

<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。

使用场景

这类场景最常见的例子就是全屏的模态框。理想情况下,我们希望触发模态框的按钮和模态框本身是在同一个组件中,因为它们都与组件的开关状态有关。但这意味着该模态框将与按钮一起渲染在应用 DOM 结构里很深的地方。这会导致该模态框的 CSS 布局代码很难写。

示例

  • 外层

    <body>
        <div id="app"></div>
        //等会将会传送到这里哈
        <div id="myapp"></div>
     </body>
    
  • 传送组件

    <template>
      <div>
        <a-button type="primary" @click="openHander">open</a-button>
        <!-- 将内容区域的代码移动到id=myapp下 -->
        <teleport to='#myapp'>
            <div class="mask" v-if="showFlag">
                <h1>对话框组件</h1>
                <div>
                    我是内容哈哈
                </div>
                <a-button  @click="openHander">关闭</a-button>
            </div>
        </teleport>
      </div>
    </template>
    <script>
    import { ref } from '@vue/reactivity'
    export default {
      setup () {
        let showFlag=ref(false)
        const openHander=()=>{
            showFlag.value=!showFlag.value
        }
        return {showFlag,openHander}
      }
    }
    </script>
    

在自己使用上比较常见的是弹窗组件,可以直接挂载到最外层进行弹窗。

img_show