首页 > 其他分享 >vue3状态流转记录

vue3状态流转记录

时间:2022-12-01 17:44:35浏览次数:47  
标签:computed 收集 get res 记录 流转 reactive vue3 reactiveData

刚用vue3的时候觉得习惯了之后非常爽,比vue2比起来要灵活,ref、reactive等新api写几个页面也基本理解用法了。

但是逐渐深入后发现遇到一些疑难问题的时候,排查起来非常困难,其依赖收集比起vue2复杂太多,我在写pinia插件的时候尤其痛苦,
感觉心智负担比原来重多了,所以这篇文章记录一下几个api在使用的时候里面的各种set、get的不同处理方式。

reactive

先从最简单的,什么都不嵌套的来梳理下

var data = {a:{b:33}}

var reactiveData = reactive(data)

var c = computed(()=>{
  return reactiveData.a.b
})
const vv = ()=>{
  reactiveData.a.b = 44
};

get收集逻辑

这里的依赖收集是通过computed来触发的

  • 因为是使用的reactive,所以一开始生成reactiveData的时候只有最外层的对象被proxy了

  • 在computed里执行reactiveData.a

    • 执行Reflect.get(target, key, receiver)得到结果命名为res

    • 执行track(target, "get" , key)把reactiveData.a进行依赖收集,放入computed这个activeEffect里

    • 判断res是否是对象( 是,res为{b:33} ),执行 reactive(res),把内部对象也转为响应式的

  • 接上一步返回的结果接着执行a.b

    • 跟上面很像,只是没有执行最后一步

总结一下,如果reactive收集复杂对象,会把需要的每一层对象都变为响应式且放进对应的activeEffect里

标签:computed,收集,get,res,记录,流转,reactive,vue3,reactiveData
From: https://www.cnblogs.com/wzcsqaws/p/16942155.html

相关文章

  • 学习pytest看到一句话记录一下:
    测试分为四个步骤:1.Arrange2.Act3.Assert4.CleanupArrange安排是我们为考试做准备。Act启动。这一行为实现了被测系统(SUT)状态的改变,也是我们可以查看的改变......
  • vite使用记录
    1.搭建项目使用NPM:npmcreatevite@latest使用Yarn:yarncreatevite使用PNPM:pnpmcreatevite构建一个Vite+Vue项目#npm6.xnpmcreatevite@late......
  • sql server 多字段查询重复记录并删除
    --查询重复的记录SELECTa.*FROMContacta,(SELECTCust_ID,Contact_NameFROMContactGROUPBYCust_ID,Contact_NameHAVINGCOUNT(1)>1)ASbWHEREa.Cust_ID=b.Cust_I......
  • ModStartCMS v5.3.0 任务调度记录,模块市场优化
    ModStart是一个基于Laravel模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。系统完全开源,基于Apache2.0开源协......
  • [Vue3-10]表单数据绑定
    1.输入框2.单选多选3.下拉选择......
  • OCC gp_Ax2源码记录
    gp_Ax2代表一个三维右手坐标系。坐标系包括以下内容:-原点(Locationpoint)-3个正交的单位向量,在OCC中分别称为"XDirection"(后文统称X),"YDirection"(后文统称Y)......
  • [Vue3-09]事件处理
    1.传参2.多事件绑定......
  • Dynamics CRM 365 RDL报表开发,让报表放到实体的运行报表里面,且需要接收当前记录的实体
    理想效果:只展示当前记录的相关信息,则需要接收当前记录的实体ID 官方讲解:https://learn.microsoft.com/zh-cn/dynamics365/customerengagement/on-premises/analytics/i......
  • 前后端分离开发工具YAPI部署记录
    之前公司说要建立起前后端分离开发模式,而我只是刚毕业,让我负责建立起这个规范,虽然刚毕业还没去大厂待过,对我来说是个挑战,只能按我理解和网上的方案进行建立。在​​Go​​......
  • 前后端分离开发工具YAPI部署记录
    之前公司说要建立起前后端分离开发模式,而我只是刚毕业,让我负责建立起这个规范,虽然刚毕业还没去大厂待过,对我来说是个挑战,只能按我理解和网上的方案进行建立。在​​Go​​......