vue3新功能-Teleport

本文介绍了Vue.js中的高级特性,包括组件间内容传递(teleport)、无需根元素的片段(fragments)、使用render函数渲染组件、自定义聚焦指令以及异步组件加载的suspense功能,以及父子组件间的Provide/Inject通信机制。
摘要由CSDN通过智能技术生成

1.teleport  在组件内的任何位置渲染内容

将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。

例:将组件dialog添加到body下面

<teleport to="body">   <el- dialog -->    </teleport> 

2.fragments  多个根元素外层不需要包裹

<fragment>    

<div>11</div>

<div>22</div>

</fragment>

3.render 函数渲染组件视图

通过函数实现以上模板语法

import {h} from 'vue'
render() {
    return h('div', [
      h('button', { on: { click: this.toggleText } }, 'Toggle Text'),
      h('div', { style: { display: this.showText ? 'block' : 'none' } }, this.text)
    ]);
  }

4. 自定义指令

例子: 聚焦

<template>
  <div>
    <input v-auto-focus />
  </div>
</template>

directives: {
    autoFocus: {
      mounted(el) {
        el.focus();
      }
    }
  }

5. suspense 异步组件加载等待过程中,优先显示一些其他的内容


<template>
  <div>
    <Suspense>
      <template #default> 
//<template #default>这层包裹可去掉
        <AsyncComponent />
      </template>
      <template #fallback>
        <div>Loading...</div>
      </template>
    </Suspense>
  </div>

import { defineAsyncComponent } from 'vue';
const AsyncComponent = defineAsyncComponent(() => import('./AsyncComponent.vue'));

6. Provide/Inject 父子孙...通信

//父
import { provide } from 'vue';
provide('tosunFunc', tosunData);

//子孙
import { inject } from 'vue';
const tosunData = inject('tosunFunc')

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值