vue3 teleport

teleport真香

理解

可以把某些在比較深層組件裡面使用的組件位置移動到特定的地方,

對於CSS定位上的處理會比以前好用。

語法

<teleport to="選擇器">內容<teleport/>

範例彈窗組件

#Dialog.vue
<template>
    <div>
        <button @click="isShow = true">彈窗</button>
        <teleport to="body">
            <div class="dialog" v-if="isShow">
                <h3>彈窗</h3>
                <button @click="isShow = false">關閉</button>
            </div>
        </teleport>
    </div>
</template>
<script>
import { ref } from "@vue/reactivity"
export default {
    setup() {
        let isShow = ref(false)
        return { isShow }
    }
}
</script>

<style>
.dialog {
    width: 300px;
    height: 300px;
    background-color: green;
}
</style>

使用後的效果

可以看到dialog是放置在body裡面與#app同層的這樣就可以方便定位。