初始Vue3.0(12)——瞬间移动 第二部分

Teleport - 瞬间移动 第二部分

Modal 组件

<template>
<teleport to="#modal">
  <div id="center" v-if="isOpen">
    <h2><slot>this is a modal</slot></h2>
    <button @click="buttonClick">Close</button>
  </div>
</teleport>
</template>
<script lang="ts">
import { defineComponent } from ‘vue‘
export default defineComponent({
  props: {
    isOpen: Boolean,
  },
  emits: {
    ‘close-modal‘: null
  },
  setup(props, context) {
    const buttonClick = () => {
      context.emit(‘close-modal‘)
    }
    return {
      buttonClick
    }
  }
})
</script>
<style>
  #center {
    width: 200px;
    height: 200px;
    border: 2px solid black;
    background: white;
    position: fixed;
    left: 50%;
    top: 50%;
    margin-left: -100px;
    margin-top: -100px;
  }
</style>

在 App 组件中使用

const modalIsOpen = ref(false)
const openModal = () => {
  modalIsOpen.value = true
}
const onModalClose = () => {
  modalIsOpen.value = false
}

<button @click="openModal">Open Modal</button><br/>
<modal :isOpen="modalIsOpen" @close-modal="onModalClose"> My Modal !!!!</modal>

初始Vue3.0(12)——瞬间移动 第二部分

上一篇:《软件定义网络:基于OpenFlow的SDN》一一2.2 硬件实现


下一篇:Python MySQL单条数据快速入库方法(使用 sqlacodegen)