vue teleport,

  vue teleport,

  Portal的概念是Vue3的新功能之一,也就是将模板HTML移动到DOM不同部分的方法。是Portal React中的一个常用函数,Vue2的Portal-vue nbsp;该库也提供类似的功能。在Vue3中,Teleport为这个概念提供了原生支持。本文将介绍传送的相关用法。

  

目录

  传送的目的

  瞬间移动是如何工作的?

  在本文中,我们将介绍:

  传送的目的

  传送的例子

  一些有趣的代码交互。

  

Teleport 的目的

  第一次是什么时候,如何使用这个瞬移功能?

  当开发一个更大的Vue项目时,代码应该用可重用的逻辑来组织。但是在处理某些类型的组件(比如模式、通知或者工具提示)时,模板HTML的逻辑可能与我们想要呈现的元素不在同一个文件中。

  实际上,在大多数情况下,处理这些元素比完全单独处理Vue的DOM要容易得多。由于嵌套组件的位置、z索引和样式等因素,它可能会变得很棘手,因为需要处理其所有父对象的范围。

  这就是传送的用武之地。我们可以在逻辑所在的组件中编写模板代码,因为这样我们就可以使用组件的数据或道具。

  如果不使用transfer,我们还必须担心事件传播会将逻辑从子组件转移到DOM树。

  

Teleport 是怎样工作的

  假设有一些子组件,我们希望在其中触发弹出通知。正如刚才所讨论的,如果通知被呈现为完全独立的DOM树,而不是Vue的root #app元素,会更简单。

  首先编辑index.html,并在/body前添加一个div。

  //index.html

  身体

  divid=app/div

  divid=portal-target/div

  /body

  接下来,创建触发呈现通知的组件。

  //VuePortals.vue

  模板

  divclass=门户网站

  button@click=showNotification 触发器通知!/按钮

  传送=#portal-target

  divclass=通知

  thiskrenderingoutsideofthischildcomponent!

  /div

  /瞬间移动

  /div

  /模板

  脚本

  从“vue”导入{ ref }

  导出默认值{

  setup(){

  constitso pen=ref(false)

  varclosePopup

  constshowNotification=()={

  isOpen.value=true

  clearTimeout(closePopup)

  closePopup=setTimeout(()={

  isOpen.value=false

  },2000)

  }

  返回{

  isOpen,

  显示通知

  }

  }

  }

  /脚本

  样式范围的。通知{

  字体系列:myriad-pro,sans-serif;

  位置:固定;

  底部:20px

  左:20px

  宽度:300px

  填充:30px

  背景色:# fff

  }

  /风格

  在这个代码片段中,当按钮被按下时,将给出2秒钟的渲染通知。但我们的主要目标是使用Teleport获得通知,并在VUE程序之外呈现它们。

  如你所见,传送有一个必需的属性:to

  to属性使用有效的DOM查询字符串,可以是:

  元素的ID

  元素类别。

  数据选择器

  响应查询字符串

  当我们传递#portal-target中的代码时,Vue程序将发现我们的#portal-target div包含在index.html中,它将传递portal中的所有代码并在这个div中呈现它。

  结果如下:

  检查元素并查看DOM以清楚地了解发生了什么。

  我们可以使用VuePortals build中的所有逻辑,但是我们需要告诉我们的项目哪个模板代码在其他地方呈现。

  以上是Vue3中瞬移的详细内容。更多关于Vue3中瞬移的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: