Vue3 相关Composition Api 2

news2024/12/26 23:33:48

一,其他Composition Api

  1. shallowReactive 与 shallowRef

    1. shallowReactive:只处理对象最外层属性的响应式(浅响应式)。

    2. shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。

    3. 什么时候使用?

      1. 如果有一个对象数据,结构比较深,但变化时只是外层属性变化===> shallowReactive。

      2. 如果有一个对象数据,后续功能不会修改该对象中的属性,而是生新的对象来替换===>shallowRef

  2. readonly 与 shallowReadonly

    1. readonly:让一个响应式数据变为只读的(深只读)。

    2. shallowReadonly:让一个响应式数据变为只读的(浅只读)。

    3. 应用场景:不希望数据被修改时。

  3. toRaw 与 markRaw

    1. toRaw:

      1. 作用:将一个由 reactive 生成的响应式对象转为普通对象。

      2. 使用场景:用于读取响应式对象对应的普通对象,对这个普通对象的所有操作,不会引起页面更新。

    2. markRaw:

      1. 作用:标记一个对象,使其永远不会再成为响应式对象。

      2. 应用场景:

        1. 有些值不应被设置为响应式的,例如复杂的第三方类库等。

        2. 当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能。

  4. customRef

    1. 作用:创建一个自定义的ref,并对其依赖项跟踪和更新触发进行显式控制。

    2. 实现防抖效果:

  5. provide 与 inject

    1. 作用:实现祖组件间通信

    2. 套路:父组件有一个 provide 选项来提供数据,后代组件有一个 inject 选项来开始使用这些数据

    3. 具体写法:

      setup(){
          let car = reactive({name:'奔驰',price:'40万'})
          provide('car',car)
      }
      1. 祖组件中:

      2. 后代组件中:

        setup(props, context){
            const car = inject('car')
            return {car}
        }
  6. 响应式数据的判断

    1. isRef: 检查一个值是否为一个 ref 对象

    2. isReactive:检查一个对象是否是由reactive创建的响应式代理

    3. isReadonly:检查一个对象是否是由readonly创建的只读代理

    4. isProxy:检查一个对象是否是由reactive或者readonly方法创建的代理

二,Composition API 的优势

  1. Options API存在的问题

    1. 使用传统OptionsAPI中,新增或者修改一个需求,就需要分别在data, methods, computed里修改。

  2. Composition API 的优势

    1. 我们可以更加优雅的组织我们的代码,函数。让相关功能的代码更加有序的组织在一起。

三,vue3新增组件

  1. Fragment

    1. 在Vue2中:组件必须有一个根标签

    2. 在Vue3中:组件可以没有根标签,内部会将多个标签包含在一个Fragment虚拟元素中

    3. 好处:减少标签层级,减小内存占用

  2. Teleport

    1. 什么是Teleport? Teleport是一种能够将我们的组件html结构移动到指定位置的技术。

      <button @click="isShow = true">点击</button>
      <teleport to="移动位置">  // body 一般可以做遮罩层
          <div v-if="isShow" class="mask">
              <div class="dialog">
                  <button @click="isShow = false">关闭弹窗</button>
                  <h3>弹窗</h3>
              </div>
          </div>
      </teleport>
  3. Suspense

    1. 等待异步组件时渲染一些额外内容,让应用有更好的用户体验

    2. 使用步骤:

      1. 异步引入组件

        import {defineAsyncComponent} from 'vue' 
        const Child = defineAsyncComponent(()=>import('./components/Child.vue'))
      2. 使用Suspense 包裹组件,并配置好 default 与 fallback

        <template>
            <div class="app">
                <h3>我是App组件</h3>
                <Suspense>
                    <template v-slot:default> 
                        <Child/>
                    </template>
                    <template v-slot:fallback>
                        <h3>加载中.....</h3>
                    </template>
                </Suspense>
            </div>
        </template>
      3. 子组件代码

        <script>
            import {ref} from 'vue' 
            export default { 
                name: 'Child',
                async setup(){
                    let sum = ref(0)
                    let p = new Promise((resolve,reject)=>{
                        setTimeout (()=>{resolve({sum})
                        },3000)
                    })
                    return await p
                }
            }
        </script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hive

Hive 概览 Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能。 本质是将SQL转换为MapReduce程序。 主要用途&#xff1a;用来做离线数据分析&#xff0c;比直接用MapReduce开发效率更高。 架构 数…

chatgpt赋能python:用Python制作动画,你不可错过的工具

用Python制作动画&#xff0c;你不可错过的工具 Python是一种高级编程语言&#xff0c;最初被设计用于编写自动化脚本和简化复杂任务。然而&#xff0c;如今它越来越多地被用于创意和艺术性的项目&#xff0c;甚至是动画制作。 Python在动画制作中的优势一直受到赞誉。它是一…

辅助驾驶功能开发-功能算法篇(2)-ACC-状态机跳转设计

1、ACC状态介绍 ALOD_MODE &#xff08;ACC状态&#xff09; 状态说明OFF ACC关闭状态&#xff0c;此时ACC图标不显示&#xff0c;且其他相关信号都发默认值。此状态下车辆完全由驾驶员控制。 PassiveACC已由驾驶员开启&#xff0c;但有抑制条件(如安全带、车门)满足&#xff0…

chatgpt赋能python:Python制作录屏软件,让你的屏幕动作不再错过

Python制作录屏软件&#xff0c;让你的屏幕动作不再错过 作为一名Python工程师&#xff0c;你可能有很多需要记录屏幕操作的场景&#xff0c;比如演示软件或者录制教学视频。那么&#xff0c;有没有一款Python制作的录屏软件来满足你的需求呢&#xff1f;答案是肯定的&#xf…

K-means聚类算法原理、步骤、评价指标和实现

1、聚类 聚类与分类不同&#xff0c;聚类分析分通过分析大量含有一定规律但杂乱数据&#xff0c;得到数据间内在的逻辑&#xff0c;将杂乱的数据按照所得的数据规律划分成不同的种类。K-measn、DBSCAN和层次是当前广泛使用的三种聚类方法。以下对三种方法进行分析&#xff0c;…

Mybatis 如何实现返回多个结果集——详测版

文章结构 本文介绍一个在 Mybatis 中不常见的操作&#xff0c;但是可能有些朋友刚好需要用到&#xff0c;Mybatis 如何实现返回多个结果集 什么情况会返回多个结果集&#xff1a; 存储过程多个 select 语句 具体过程如下&#xff08;作者实测&#xff1a;跟着观战就完事了&a…

chatgpt赋能python:Python:一个强大、适用广泛的编程语言

Python&#xff1a;一个强大、适用广泛的编程语言 作为一种高级编程语言&#xff0c;Python 可以轻松地完成许多计算机编程任务。它是一种协作和代码重用的语言&#xff0c;Python旨在提高生产力并减少缺陷。 对于那些想要学习编程语言的人来说&#xff0c;Python 是非常适合…

Class源码

介绍 如果想要在程序运行阶段访问某个类的所有信息&#xff0c;并支持修改类的状态或者行为的话&#xff0c;肯定会用到反射&#xff0c;而反射靠的就是Class类。 通过Class类可以获取类的实例&#xff0c;构造方法&#xff0c;字段&#xff0c;成员方法&#xff0c;接口等信…

网络编程知识点总结(3)

socket 服务器的开发步骤和代码实现 1.创建套接字 socket()函数 int socket(int domain, int type, int protocol); domain: 指明所使用的协议族&#xff0c;通常为 AF_INET&#xff0c;表示互联网协议族(TCP/IP 协议族)AF_INET IPv4因特网域. AF_INET6 IPv6 因特网域 AF_U…

屏幕录制安卓应用被发现在监视用户

据 ESET 的研究人员称&#xff0c;一款在 Google Play 商店中下载量超过 50,000 次的屏幕录像机应用程序被发现使用设备的麦克风悄悄地录制音频并窃取文件&#xff0c;这表明它可能是间谍活动的一部分。 iRecorder 是一个合法的应用程序&#xff0c;于 2021 年 9 月可用&#…

chatgpt赋能python:Python动态函数介绍

Python动态函数介绍 Python是一种高级编程语言&#xff0c;它支持动态函数。动态函数就是在Python中可以在运行时创建函数。这意味着编程者可以在编写代码时不必事先定义所有函数&#xff0c;而是可以通过Python函数来创建函数。 Python动态函数的一个好处是可以轻松地编写可…

chatgpt赋能python:Python动态列表介绍

Python动态列表介绍 Python是一种常用的高级编程语言&#xff0c;它支持多种数据结构&#xff0c;其中包括列表。以Python中的列表为例&#xff0c;本文将详细介绍Python动态列表的特点和用途。 Python中的列表 在Python中&#xff0c;列表就是一组由逗号分隔&#xff0c;放…

基于PyQt5的图形化界面开发——队列动画演示

目录 0. 前言1. 了解队列2. 代码实现3. 效果演示其他PyQt5文章 0. 前言 本文使用PyQt5制作图形化界面演示数据结构中的队列操作&#xff0c;与上一节队列动画相对应 基于PyQt5的图形化界面开发——队列动画演示 操作系统&#xff1a;Windows10 专业版 开发环境&#xff1a;P…

javascript基础十六:Ajax 原理是什么?如何实现?

一、是什么 AJAX全称(Async Javascript and XML) 即异步的JavaScript 和XML&#xff0c;是一种创建交互式网页应用的网页开发技术&#xff0c;可以在不重新加载整个网页的情况下&#xff0c;与服务器交换数据&#xff0c;并且更新部分网页 Ajax的原理简单来说通过XmlHttpRequ…

Linux编辑器,开机重启,用户注销,用户管理 常用命令

Linux 实操篇- Vi 和Vim 编辑器 vi 和vim 的基本介绍 Linux 系统会内置vi 文本编辑器 Vim 具有程序编辑的能力&#xff0c;可以看做是Vi 的增强版本&#xff0c;可以主动的以字体颜色辨别语法的正确性&#xff0c;方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特…

环境感知算法——4.RandLA-Net基于SemanticKITTI训练

1.前言 RandLA-Net&#xff08;Random Sampling and Local Feature Aggregator Network&#xff09;是一种处理点云数据的神经网络结构&#xff0c;采用随机采样&#xff08;Random Sampling, RS&#xff09;以降低点云密度并减少计算量。尽管随机采样可能会丢掉一些有用的信息…

【 STM32实例 】 智能小车的红外循迹

文章目录 前言一、硬件选择与连接1. STM32F103C8T6最小系统板2. L298N双路电机驱动3. 红外循迹模块 二、环境配置1. Device2. Output3. C/C4. Debug 三、项目管理与代码实现1. 项目结构2. 工程管理3. 具体文件xunji.cxunji.hmain.c 总结项目源码 前言 这篇文章我主要讲的是让基…

chatgpt赋能python:Python加颜色代码-提高代码可读性和吸引力的简单技巧

Python加颜色代码 - 提高代码可读性和吸引力的简单技巧 在编写Python代码时&#xff0c;您可能已经注意到&#xff0c;有时候需要强调某些部分&#xff0c;以使其更易于阅读和理解。这时候&#xff0c;您可以使用加颜色代码来增强代码的可读性和吸引力。在本文中&#xff0c;我…

Opencv项目实战:基于dlib的人脸关键点检测

文章目录 一、项目简介二、环境配置2.1、dlib人脸检测器&#xff1a;dlib.get_frontal_face_detector()2.2、dlib关键点定位工具&#xff1a;shape_predictor_68_face_landmarks.dat 三、项目实战 一、项目简介 该项目基于dlib模块提供的人脸检测器以及关键点定位工具完成。首…

大数据:hive数据库的操作语法,数据表,内部表,external外部表,数据导入导出load,insert

大数据&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要学&#x…