美文网首页
teleport用法

teleport用法

作者: 回不去的那些时光 | 来源:发表于2023-04-02 10:39 被阅读0次

使用 <teleport></teleport> 标签包裹内容,且给 to 属性绑定瞬移位置的选择器。

详细的 teleport 使用步骤

1、定义内容

<template>
  <teleport to="#modal">
    <div id="center" v-if="isOpen">
      <h2>
        <slot>this is modal</slot>
        <br/>
        <button @click.stop="buttonClick">关闭</button>
      </h2>
    </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 scoped>
#center {
    width: 200px;
    height: 200px;
    border: 1px solid black;
    background: white;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
</style>

2、引入组件并使用

<template>
    <button @click.stop="openModal">打开</button>
    <modal :isOpen="modalIsOpen" @close-modal="closeModal">my modal</modal>
</template>

<script lang="ts">
import Modal from "./components/Modal.vue";

export default defineComponent({
    name: "App",
    components: {
        Modal,
    },
    setup() {
        const { x, y } = useMousePosition();
        const modalIsOpen = ref(false);
        const openModal = () => {
          modalIsOpen.value = true;
        };
        const closeModal = () => {
          modalIsOpen.value = false;
        };
        return { modalIsOpen, openModal, closeModal };
    },
});
</script>

3、设定瞬移后的位置
在index.html添加

<div id="modal"></div>

相关文章

网友评论

      本文标题:teleport用法

      本文链接:https://www.haomeiwen.com/subject/lrdhddtx.html