vue3`

2023-11-17

1. ref是一个函数,响应式数据。使用前要引入,
impor{ref} fro】vue
let name= ref('张三'),
改变数据: name.value='李四'
vue3对不同对象处理不同!
数据劫持才是响应式的根本,getset

处理对象用proxy,获取直接获取

如果用reactive,直接改变就可以 job.a=3  


2.添加属性 Vue.set(this.person,"sex","女)
this.$set(this.person,"sex","女)

3.vue3响应式原理:通过proxy代理,加上reflect反射
const p = new Proxy(person,{
      //读取属性值
      get(target,propName){
        return Reflect.get(target,propName)
      },
      //添加或者更新属性值
      set(target,propName,value){
         Reflect.set(target,propName,value)
      },
      //删除属性值
      deleteProperty(target,propName){
        return Reflect.deleteProperty(target,propName)
      },
    })


3.ref基本类型,reactive对象或者数组
ref通过object.defineProperty的get和set数据劫持
reactive通过proxy来实现响应式,通过reflect操作源对象内部的数据
一般是把数据封装成对象然后通过reactive。。
let data=reactive({
    person:{},
    name:{}
})

4.set up()在beforecreate前面,他没有this,
set up(props,context)
props:传递的参数
context:上下文 包括 attrs:组件外部传递的对象但是没在props里的、slots:插槽、emit触发自定义事件

5.计算属性 变成了一个函数
//直接在person中增加一个属性 不用return了,简写
     /*  person.full=computed(()=>{
        return person.name+'-'+person.age
      }) */
      //完整版,考虑到属性的更新修改
      person.full=computed({
        get(){
            return person.name+'-'+person.age
        },
        set(value){
            const a = value.split('-')
            person.name=a[0]
            person.age=a[1]
        }
      })


6.监视属性 
监视多个,写成数组的形式(ref)
watch([sum,msg],(newValue,oldValue)=>{
        console.log('sum变了',newValue,oldValue);
      })
立刻执行,第三个参数。(ref)
watch(sum,(newValue,oldValue)=>{
        console.log('sum变了',newValue,oldValue);
      },{immediate:true})

监视的是reactive,new和old返回的不对,会发现他两个返回的数据相同,并且强制开启了深度监视
      watch(person,(newValue,oldValue)=>{
        console.log('person',newValue,oldValue);
      })

监视reactive中的某一个属性,不能写person.age,写成一个函数,deep深度监视有效
      watch(()=>person.name,(newValue,oldValue)=>{
        console.log('person',newValue,oldValue);
      })

监视reactive中的某多个属性,不能写person.age,写成一个函数
      watch(【()=>person.name,()=>person.age】,(newValue,oldValue)=>{
        console.log('person',newValue,oldValue);
      })

监视函数体中定义的东西,只要发生了改变就会调用,有点像computed,(因为只要里面发生变化,函数就会改变),但是computed注重的是结果,监视注重的是过程
      watchEffect(()=>{
        const x1= sum.value
        const x2 =person.name
        console.log('watch effect回调执行了');
      })

7.组合式api生命周期的钩子,用之前要引入import
beforcrate、created不能向setup中写,
以下钩子都是函数
beforemount--onbeforemount\mounted--onmounted
beforeupdate--onbeforeupdate
beforeunmount--onbeforeunmount\unmounted---onunmounted

8.自定义hook函数,export default function(){} 然后引入应用的页面即可
相当于vue2中的mixin
复用代码

9.toref 把什么东西变成ref,相当于地址传递
let name=toRef(person,'name') 把person里的name属性传地址给name
ref(person.name)是复制一个 
 toRefs(person) 把person里的所有属性

10.ref可以处理任何类型,shallowref不处理对象类型的
shallowreactive只处理对象最外层属性的响应(浅响应

11.readonly只读,不能改变
shallowreadonly最外层的不能改变,但是深层的数据可以改变


12.vue2不能直接监视数组得变化,就是可以改变数组,但是改变了不能显示到页面上,必须用this.$set,
所以vue3中运用了proxy来监视,


13.toraw:将响应式转为普通对象
markRaw:永远不会变为响应式对象

14.自定义ref函数!!
function myRef(value){
        let timer
        return customRef((track,trigger)=>{
          return{
            get(){
              track()//通知vue跟踪value得变化
              return value
            },
            set(newValue){
              clearTimeout(timer)
              timer=setTimeout(() => {
                value=newValue
                trigger()//通知vue重新解析模板
              }, 200);
            }
          }
        })
      }

15.provide:实现祖孙组件间通信 inject孙组件得到数据


16.vue3:组合式api,更优雅得组织代码,让相关功能的代码更有序地组织在一起,更大的发挥自己得优势,要运用hook函数!!直接引入
vue2:配置api,要写很多配置,功能很多都拆散了

17.新组件,
Fragment:vue3中不用写根标签,是把他们一起放到了fragment标签中,减少标签层级。
Teleport:从某个标签 传送到另一个标签中
Suspense:等待异步组件
异步引入 defineAsyncComponent(()=>import(‘/’))
suspens有两个插槽default(放要显示的组件)和fallback(如果default没展示,展示这个)
<Suspense>
    <template v-slot:default>
        <Child/>
    </template>
    <template v-slot:fallback>
    </template>
</Suspense>
suspense+promise可以使组件加载等待几秒

18.全局api的转移

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3` 的相关文章

  • filezilla中文目录乱码怎么解决

    FileZilla是一款常用的文件传输工具 但在使用过程中可能会遇到乱码的问题 以下是一些可能的解决方案 设置字符集 在连接上站点后 点击菜单栏的 文件 选项 下拉选择 添加当前连接到站点管理器 在弹出的 站点管理器 窗口中 左侧选择 新站
  • 监控显卡显存(python代码)

    一 前言 我和我同学的代码 分别占用14G显存 而显卡的显存只有24G 没有办法同时跑 所以 他先跑 我的代码时刻监控显存的使用情况 只要显卡显存大于14G 我的代码就自动启动 二 代码 import pynvml import time
  • Fiddler工具 — 9.命令行和状态栏

    1 命令行 命令行在Fiddler的左下方的黑色窗口 也叫 QuickExec 可以调用 Fiddler的内置命令 这一系列内置的函数用于筛选和操作会话列表中的session 会话 虽然它不是很显眼 但用好它 会让你的工作效率提高 N 倍
  • Firefox浏览器-渗透测试插件推荐

    在日常工作中可能需要一些浏览器插件辅助我们做工作 下面是比较好的 当然不一定对你有用 找到适合自己的即可 FoxyProxy FoxyProxy是一个高级的代理管理工具 它完全替代了Firefox有限的代理功能 它提供比SwitchProx
  • 【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

    前端开发属于程序员吗 网友是这样回答的 看完前端同学的评论 我悟了 你们让人都去学后端卷 然后减小前端竞争压力是吧 哈哈哈 你们这帮老6 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些觉得 是个人都能干前端 的同学们想必已经熟练掌握了
  • 如何给 unplugin-vue-components/vite 写一个简单的 resolver

    大部分工作 unplugin vue components 都已经处理好了 我们只需要接收组件名来判断是否是自己的组件 然后处理对应的导入逻辑 一共 3 个字段 as 重命名类似 import componentNameReName fro
  • 【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据 文章
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 每天10个前端小知识 <Day 8>

    1 Javascript中如何实现函数缓存 函数缓存有哪些应用场景 函数缓存 就是将函数运算过的结果进行缓存 本质上就是用空间 缓存存储 换时间 计算过程 常用于缓存数据计算结果和缓存对象 缓存只是一个临时的数据存储 它保存数据 以便将来对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 低代码-添加按钮组件设计

    效果图 可拆分为以下细节 按钮列表 删除 两个操作需同步删除 点击外侧删除 点击复选框删除 添加 点击复选框添加 示例代码 技术栈 vue3 arco design ts less tailwindcss
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中 冒号 的作用是为提取的字段指定一个新的变量名 让我们以示例 const billCode code version route query 来说明 billCode code version 表示从 route query
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

    JVM优化之 Xss Xms Xmx Xmn 参数设置 XmnXmsXmxXss有什么区别 Xmn Xms Xmx Xss都是JVM对内存的配置参数 我们可以根据不同需要区修改这些参数 以达到运行程序的最好效果 Xms 堆内存的初始大小 默
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • Vue中下载不同文件常用的方式

    1 使用window open方法下载文件
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结

随机推荐

  • webstorm vue 项目卡顿现象 解决

    Settings editor File Types ignore files and folders 要忽略的文件添加 node modules 然后点击应用 在项目中点击node modules 右键 Mark Directory as
  • CMAKE 工具 之 add_executable,include_directories和 AUX_SOURCE_DIRECTORY

    在上一章里面 我们用cmake做了一个最简单的项目 这一节我们尝试一写比较常见的cmake配置 这次我们构建如下的目录结构 其中int plus h的代码如下 int int plus const int a const int b int
  • 【经验贴】新手项目经理如何接手并管好项目?

    最近有刷到这样一些求助帖 初入职场两三年的项目经理现在开始独立带项目 由于缺乏经验不知道从何下手 询问如何能快速接手并管好项目呢 这个话题也引起了大家的热议 今天就给大家分享一下一些实践经验 1 刚拿到项目时 应该做哪些准备 新接手项目时
  • Octave 计算数据 from 吴恩达的机器学习

    1 乘积 A C 2 点乘 A B 将矩阵A中的元素点乘B中的对应元素相乘 A 2 对矩阵A中的每一个元素平方 1 A 得到每一个元素的倒数 3 log A 对每个元素进行求对数运算 4 exp A 自然数e的幂次运算 就是以e为底 以这些
  • MySql8.0以上版本安装

    一 下载mysql8 0 1 官网地址 https www mysql com 2 进入下载页面 3 选择版本下载 二 安装mysql 1 配置环境变量 变量名 MYSQL HOME 变量值 mysql存放路径 例如 D mysql 8 0
  • postgresql 扩展pg_cron,pg_stat_statements安装配置

    一 概述 pg cron是基于cron的作业调度插件 语法与常规cron相同 但它可以直接从数据库执行PostgreSQL命令 pg stat statements模块提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息 可以
  • 技术和商业角度刷脸支付都将成为未来趋势

    刷脸支付 我们作为消费者来说 最直观的感受就是我们的支付方式发生了变化 付钱更方便了 从最开始我们带着现金出门买东西 到后来二维码支付 一个手机扫遍天下 对于商家来说他不需要停下来手中在做的事情来收钱找零 而对于我们消费者来说也是非常的快捷
  • Python 内置数据类型 03----元组

    目 录 1 元组的简介 1 1 元组概念 1 2 元组创建方式 1 2 1 使用 直接创建 1 2 2 使用 tuple 函数创建 1 3 元组访问方式 2 处理元组的内置函数 2 1 len 函数 2 2 max 函数 2 3 min 函
  • 【编程测试题】数列还原

    数列还原 题目描述 牛牛的作业薄上有一个长度为 n 的排列 A 这个排列包含了从1到n的n个数 但是因为一些原因 其中有一些位置 不超过 10 个 看不清了 但是牛牛记得这个数列顺序对的数量是 k 顺序对是指满足 i lt j 且 A i
  • virtualbox网络常见问题,virtualbox linux 无法访问网络,virtual box 中 linux ping 不通,配置NAT ssh 无法连接

    问题1 在virtualbox 安装了 linux 发现无法访问网络 解决 不要去改 etc resolv conf 正确的做法是在virtual box配置NAT地址转发 补充一下 我发现mac每次加载虚拟机都要点开高级 然后点端口配置
  • python opencv数组转图片 并显示

    pred是数组类型 先转为8位 pred np array pred np uint8 cv2 imshow 123 pred cv2 waitKey 0
  • Basic Level 1025 反转链表 (25分)

    题目 给定一个常数 K 以及一个单链表 L 请编写程序将 L 中每 K 个结点反转 例如 给定 L 为 1 2 3 4 5 6 K 为 3 则输出应该为 3 2 1 6 5 4 如果 K 为 4 则输出应该为 4 3 2 1 5 6 即最后
  • vue项目 依赖打包 与 import和dependencies 的关系

    项目打包时 依赖与package json中的dependencies和devDependencies并无关 我曾这样认为了好久 原来他们之间的关系是这样的 项目打包的依赖来自于你import from xxx 如无特殊设置 import的
  • 信息安全无小事,手把手教你日志脱敏

    场景 我们开发的程序迟早有一天都会上线到生产环境运行 但是没有人能保证自己的代码100 不出BUG 别抬扛 真没BUG是代码写的少 当我们线上出BUG之后 最常见的定位问题方法就是排查日志文件 所以我们一般都会在开发程序时 在适当的位置输出
  • scikit-learn工具包中常用的特征选择方法介绍

    对于特征选择的作用在这里照搬 西瓜书 中的描述 常用的特征选择方法有以下三种 备注 以下代码采用Jupyter notebook编写 格式与传统稍有不同 1 过滤式特征选择 简单理解就是过滤式特征选择通过选择与响应变量 目标变量 相关性度量
  • typora 编辑器基本用法

    Markdown 由 Daring Fireball 创建 原始指南在 这里 但是 它的语法因不同的解析器或编辑器而异 Typora 正在使用 GitHub Flavored Markdown 1 段落换行 按 Shift Return 可
  • Unity3D碰撞后去掉相互之间的反弹力

    最近做一个小游戏的时候发现 小模型碰撞到墙壁之后会有一个小小的反弹力导致模型有一个微弱的回弹位移 这样给人一种不好的感觉 研究了一下 除了 rigidbody Freeze Rotation之外 在FixedUpdate 注意这里是物理特性
  • mysql 正序_请问mysql 中 怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,...

    展开全部 有两个思路 1 按照各自的活动状态先排序 插入到临时表 最后再union all所有结32313133353236313431303231363533e58685e5aeb931333363353862果集create tempo
  • calico分配网络使k8s节点指定固定网段

    文章目录 calico分配网络使k8s节点指定固定网段 1 配置calicoctl 1 1 下载calicoctl 1 2 配置calicoctl 1 3 测试calicoctl 2 配置ippool 3 添加ippool 4 创建pod测
  • vue3`

    1 ref是一个函数 响应式数据 使用前要引入 impor ref fro vue let name ref 张三 改变数据 name value 李四 vue3对不同对象处理不同 数据劫持才是响应式的根本 getset 处理对象用prox