iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解Vue新增内置组件的使用
  • 623
分享到

详解Vue新增内置组件的使用

2024-04-02 19:04:59 623人浏览 安东尼
摘要

目录一、Teleport1.1 Teleport 介绍1.2 使用 Teleport1.3 预览效果二、Suspense2.1 介绍 Suspense2.2 使用 Suspense2

一、Teleport

Teleport 官方文档

1.1 Teleport 介绍

1.Vue 鼓励我们通过将 UI 和相关行为封装到组件中来构建我们的 UI。我们可以将它们相互嵌套以构建构成应用程序 UI 的树。

2.但是,有时组件模板的一部分在逻辑上属于该组件,而从技术角度来看,最好将模板的这部分移动到 DOM 中的其他位置,即 Vue 应用程序之外。

上面的话是不是看起来很懵逼,其实是翻译自 官方文档

其实我理解的 Teleport 就是将一个组件挂载在 Vue app 之外,我们知道,Vue 属于 SPA(单页面)应用。所有的渲染都在 id 为 app 的标签里面,这样的话,我们就创建一个和 app 是同级 的组件,并且通过 teleport 标签引用,就可以任意页面使用了

1.2 使用 Teleport

1.我们这里也是实现一个全局模态框

2.通过 父子组件通信 机制,来使用 teleport 的挂载的特性


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite App</title>
  </head>
  <body>
    <div id="app"></div>
    <div id="modal"></div> <!-- 定义一个和 app 同级的标签 modal -->
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

定义一个 Modal 组件


<template>
	<!-- teleport 有个一个 to 属性,挂载在 id为modal的标签上 -->
    <teleport to="#modal">
        <div id="center" v-if="isOpen">
            <div class="modal-header" v-if="title">
                <h2>{{ title }}</h2>
                <hr />
            </div>
            <div class="modal-content">
                <!-- 我们使用插槽,来支持外部插入内容 -->
                <slot></slot>
            </div>
            <button @click="buttonClick">Close</button>
        </div>
    </teleport>
</template>
<script lang="ts">
// defineProps<{ msg: string }>() vue3 setup 定义 props
import { defineComponent } from 'vue';
export default defineComponent({
    props: {
        isOpen: Boolean,
        title: String
    },
    // 验证
    emits: {
        'close-modal': null
        // (payload: any) => {
        //     return payload.type === 'close'
        // }
    },
    setup(props, context) {
        const buttonClick = () => {
            context.emit('close-modal');
        }
        return {
            buttonClick
        }
    }
});
</script>
<style>
#center {
    width: 200px;
    height: 200px;
    border: 2px solid black;
    background-color: white;
    position: fixed;
    left: 50%;
    top: 50%;
    transfORM: translate(-50%, -50%);
}
</style>

3.使用 Modal 组件


<script setup lang="ts">
import { ref } from 'vue';
import Modal from './components/Modal.vue';
const modalTitle = ref('你好,世界');
const modalIsOpen = ref(false);
const openModal = () => {
  modalIsOpen.value = true;
}
const onModalClose = () => {
  modalIsOpen.value = false;
}
</script>
<template>
  <img alt="Vue loGo" src="./assets/logo.png" />
  <div class="test-useURLLoader">
    <button @click="openModal">modal</button>
    <Modal :title="modalTitle" :isOpen="modalIsOpen" @close-modal="onModalClose">
      My modal
    </Modal>
  </div>
</template>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -WEBkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

1.3 预览效果

请添加图片描述

二、Suspense

Suspense 官方文档

Waring:作为 Vue3 中实验性的功能,随时都有可能修改,所以不建议用于生成环境的应用

2.1 介绍 Suspense

是可以用来异步数据,它拥有一个本地的处理方法用来适配多种情形提供了二选一(加载完成 和 失败的插槽)

更详细的内容大家可以自行翻阅官方文档,我只是进行一部分的挑选

2.2 使用 Suspense

1.为了实现异步效果,我们可以使用 Promise 来实现异步操作。

2.我们定义如下组件 AsyncShow.vue 组件


<template>
	<!-- 等待3秒显示数据 -->
    <h1>{{ result }}</h1>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
    setup() {
        return new Promise((resolve) => {
            setTimeout(() => {
                return resolve({
                    result: 43
                })
            }, 3000);
        });
    }
});
</script>
<style>
</style>

3.在 App.vue 里面使用该组件


<script setup lang="ts">
import AsyncShow from './components/AsyncShow.vue';
</script>
<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <div class="test-useURLLoader">
    <!-- Promise 未执行完成时,就会显示 Loding... 执行完毕后,就会显示数值 -->
    <Suspense>
      <template #default>
        <AsyncShow />
      </template>
      <template #fallback>
        <h2>
          Loading...
        </h2>
      </template>
    </Suspense>
  </div>
</template>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

2.3 预览效果

请添加图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: 详解Vue新增内置组件的使用

本文链接: https://www.lsjlt.com/news/159628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Vue新增内置组件的使用
    目录一、Teleport1.1 Teleport 介绍1.2 使用 Teleport1.3 预览效果二、Suspense2.1 介绍 Suspense2.2 使用 Suspense2...
    99+
    2022-11-12
  • vue 内置组件 component 的用法示例详解
    目录component is 内置组件切换方法一:component is 内置组件切换方法二:component is 内置组件切换方法一: component组件(单独拿出一个组...
    99+
    2022-11-13
    vue 内置组件 component vue  component用法
  • Vue3内置组件Teleport使用方法详解
    目录1、Teleport用法2、完成模态对话框组件3、组件的渲染前言: Vue 3.0 新增了一个内置组件 teleport ,主要是为了解决以下场景: 有时组件模板的一部分逻辑上属...
    99+
    2022-11-12
  • vue内置组件怎么使用
    这篇文章主要介绍了vue内置组件怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue内置组件怎么使用文章都会有所收获,下面我们一起来看看吧。vue组件有:1、component,用于渲染一个“元组件”为...
    99+
    2023-07-04
  • Vue 内置组件keep-alive的使用示例
    目录一、keep-alive 用法使用示例: 1.缓存所有页面:2.根据条件缓存部分页面 3.结合vue-router,缓存部分页面二、keep-alive 生命周期 1. acti...
    99+
    2022-11-12
  • vue中如何使用transition内置组件
    这篇文章给大家介绍vue中如何使用transition内置组件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。基本概念Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡...
    99+
    2022-10-19
  • vue内置组件keep-alive怎么使用
    这篇文章主要讲解了“vue内置组件keep-alive怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue内置组件keep-alive怎么使用”吧!一、Keep-alive 是什么k...
    99+
    2023-07-04
  • vue中router-view组件的使用详解
    在开发vue项目中经常需要实现一个页面里面可以切换着展现不同的组件页面 例如:下图中通过点击侧边栏不同的组件路由到不同的组件页,而侧边栏和顶部部分是不变的,切换的只是组件页面。 这...
    99+
    2022-11-12
  • Vue提示框组件vue-notification使用详解
    先看下演示效果: 安装方法:通过 npm install vue-notification 就能使用了。 导入方法: import Notifications from 'vue-...
    99+
    2023-03-20
    Vue提示框vue notification Vue提示框组件
  • Vue 可拖拽组件Vue Smooth DnD的使用详解
    目录简介和 Demo 展示API: Container属性生命周期回调事件API: Draggable实战简介和 Demo 展示 最近需要有个拖拽列表的需求,发现一个简单好用的 Vu...
    99+
    2022-11-12
  • SpringCloud Bus组件的使用配置详解
    目录什么是Bus搭建RabbitMQ服务实现自动配置刷新指定服务刷新配置集成webhook实现自动刷新什么是Bus 0.解释 https://spring.io/projects/s...
    99+
    2022-11-13
  • 聊聊对vue内置组件keep-alive的理解
    Keep-alive 是什么?下面本篇文章带大家聊聊对vue内置组件keep-alive的理解,希望对大家有所帮助!一、Keep-alive 是什么keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染...
    99+
    2023-05-14
    keep-alive 前端 JavaScript Vue.js
  • 详细解读VUE父子组件的使用
    目录1.递归组件2.组件之间的循环使用二,深层次的问题**1.父传子****2.子传父***3.兄弟关系** 4.子组件复用5.父组件通过ref调用子组件的方法我们对父子组...
    99+
    2023-05-19
    VUE 组件 VUE父子组件
  • vue可滑动的tab组件使用详解
    本文实例为大家分享了vue可滑动tab组件使用的具体代码,供大家参考,具体内容如下 需求: 1. 每个tab-item的间距是相同的,可定制 2. 每一个tab-item的宽度是随着...
    99+
    2022-11-13
  • vue组件component的注册与使用详解
    目录1.什么是Vue组件(1)定义(2)父子关系2.Vue组件使用(注册方式)1.局部注册(私有组件注册)2.全局注册3.使用组件的步骤:1.什么是Vue组件 (1)定义 组件是Vu...
    99+
    2022-11-13
    vue组件component vue组件注册使用
  • Vue之常用的内置指令详解
    <body> <div id="root"> <h1 v-pre>好好学习</h1> &...
    99+
    2022-11-12
  • LRU算法在Vue内置组件keep-alive中的使用
    目录vue的keep-alive内置组件的使用也是使用了改算法,源码如下:实现一个自己的LRU算法另一种vue的keep-alive内置组件的使用也是使用了改算法,源码如下: e...
    99+
    2022-11-12
  • vue滑动解锁组件使用方法详解
    本文实例为大家分享了vue滑动解锁组件的使用,供大家参考,具体内容如下 这是一个pc端的滑动解锁组件 效果图: 话不多说,直接上代码 html部分 <template>...
    99+
    2022-11-13
  • Vue滑块解锁组件使用方法详解
    本文实例为大家分享了Vue滑块解锁组件的使用,供大家参考,具体内容如下 依据 JS拖动滑块验证 开发的 Vue 滑块解锁组件。 <template>   <div ...
    99+
    2022-11-13
  • vue验证码组件使用方法详解
    本文实例为大家分享了vue验证码组件使用的具体实现代码,供大家参考,具体内容如下 代码如下: <template> <div class="join...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作