vue3的computed.ts

2023-11-06

 vue3的computed.ts

import { effect } from './effect';
class ComputedRefImpl {
    public _dirty = true;
    public _value;
    public effect;
    constructor(getter, public setter) {   //ts中默认不会挂在this上
        this.effect = effect(() => {   //计算属性 默认会产生一个effect

        }, {
            lazy: true,    //默认不执行
            scheduler: () => {
                if (!this._dirty) {
                    this._dirty = true;
                    trigger(this, TriggerOrTypes.SET, 'value');
                }
            }
        });

    }
    get value() {   //计算属性也要收集依赖
        if (this._dirty) {
            this._value = this.effect();   //会将用户的返回值   返回
            this._dirty = false;
        }
        track(this, TrackOpTypes.GET, 'value');
        return this._value;
    }
    set value(newValue) {
        this.setter(newValue);
    }
}

// vue2和vue3 的computed原理是不一样的
export function computed(getterOrOptions) {
    let setter;
    let getter;
    if (Function(getterOrOptions)) {
        getter = getterOrOptions;
        setter = () => {
            console.warn('computed value must be readonly ')
        }
    } else {
        getter = getterOrOptions.get;
        setter = getterOrOptions.set;
    }

    return new ComputedRefImpl(getter, setter);
}

// 缓存就靠dirty来的.
// 调试collectionHandlers ref 的api和computed 

 

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

vue3的computed.ts 的相关文章

  • python requirements.txt的生成与使用

    项目开发过程中难免少不了三方库的各种安装 python对这个场景做了一个特别的三方包安装list 一般都叫做requirements txt 如果项目中使用了 virtualenv 环境 直接通过pip freeze 就可以解决 如果没有的

随机推荐

  • 测试开发必备10大技能,你达标了吗?

    一个人到底要走多少弯路 才能成为一名合格的测试开发工程师 近年来 随着敏捷开发 微服务架构 DevOps逐渐深入人心 软件行业发生了翻天覆地的变化 相应地 软件测试行业也洗牌加剧 软件测试的准入门槛 也从以前的是个人就行 逐渐变成了 科班出
  • 升级OpenSSH

    升级OpenSSH 安装工具包 yum install y gcc gcc c openssl devel zlib devel zlib dev openssl devel pam devel 备份旧的ssh文件 mkdir p back
  • 多进程IterableDataset流式读取数据的坑:每个进程会读取一遍完整数据

    构建流式读取DataLoader的方法可以参考 pytorch构造可迭代的DataLoader 动态流式读取数据源 不担心内存炸裂 pytorch Data学习三 使用如下方法构造DataLoader 如果num workers设置为N 就
  • kubernetes 1.27.3 集群部署方案

    一 准备环境 1 1 Kubernetes 1 27 3 版本集群部署环境准备 1 1 1 主机硬件配置说明 cpu 内存 硬盘 角色 主机名 系统版本 8C 8G 1024GB master master01 centos 7 9 8C
  • C++STL(5)常用容器介绍(四)list、set、map容器

    1 list 概 述 链表是一种物理存储单元上非连续 非顺序的存储结构 数据元素的逻辑顺序是通过链表中的指针链接次序实现的 链表由一系列结点 链表中每一个元素称为结点 组成 结点可以在运行时动态生成 每个结点包括两个部分 一个是存储数据元素
  • jenkins学习笔记第二篇全局工具配置与结点配置

    1 1jenkins 全局工具配置 maven配置 JDK配置 Ant配置 本地安装的有ANt1 9 配置ANt可以实现后面的 jmeter Ant的自动化接口测试 生成自动化测试报告 Git配置 在配置结点时 先配置全局安全性 Confi
  • php 请求chatgpt3.5 非stream流输出模式代码用于批量发布文章

    以下是模板兔用php写的请求chatgpt3 5 非流输出模式 不是打字特效 的代码示例 这种非流模式一般用于批量生产文章 通过chatgpt你可以大量生产伪原创文章 提供网站收录 近期我们会增加一个wordpress通过GPT批量发布文章
  • 一零六九、MySQL回顾总结

    索引下推 在联合查询的过程中 根据联合索引包含字段直接过滤掉不满足的记录 减少回表次数 能用索引就用索引 覆盖索引 查询字段包含了索引的全部字段聚集索引 将常用的字段作为主键或聚集索引 undolog redolog binlog的区别和联
  • sd和sem啥区别_Mean ± SEM or Mean(SD) 区别

    1 The common descriptive statistics is mean and standard deviation SD SD 平均值和标准偏差 Data not following the normal distribu
  • linux上如何删除文件名乱码的文件

    今天在服务上发现了两个文件名是乱码的文件 如图所示 于是想用rm命令把它们删掉 但提示没有此文件 网上搜了一下 找到解决方法 首先执行ls i命令 此时在文件前面会出现一个数字 这个数字是文件的节点号 接着 执行命令 find inum 节
  • 关于质量,大家都在关注什么?

    转自 ThoughtWorks中国 去年 我们在 数字化时代的软件测试 中看到了2017年软件质量方面的趋势和给测试人员的建议 又一年过去了 大家对软件质量保障和测试的关注有哪些变化呢 我们一起来看看这份质量报告 World Quality
  • minio中的安装启动地址问题

    安装 把包扔进去 赋予权限 chmod x minio 创建一个data目录 address和 console address是MinIO服务器启动命令中的两个参数 它们具有以下区别 address参数 用于指定MinIO服务器监听的S3
  • [转] 新手学Linux:在VMware14中安装CentOS7详细教程及经验

    转自 https blog csdn net yiyihuazi article details 78557216 这里说下自己遇到一个坑 1 如果在公司内部 虚拟机上网可能 需要设置代理 方法如下 在文件后面加上 http proxy h
  • graphics.h图形库:基本概念(2)——坐标

    文章目录 1 物理坐标 2 逻辑坐标 在 EasyX 中 坐标分两种 物理坐标和逻辑坐标 1 物理坐标 物理坐标是描述设备的坐标体系 坐标原点在设备的左上角 X 轴向右为正 Y 轴向下为正 度量单位是像素 坐标原点 坐标轴方向 缩放比例都不
  • java中讲讲FileWriter的用法

    java中讲讲FileWriter的用法 FileWriter的用法 马克 to win 马克 java社区 防盗版实名手机尾号 73203 FileWriter是Writer的继承类 从字面上就可看出 它的主要功能就是能向磁盘上写文件 w
  • 鬼泣4refrain 《鬼泣4 refrain》图文全攻略(iphone版)

    本篇文章由 泉州SEO www 234yp com 整理发布 转载请注明原文地址 www 234yp com Article 147467 html 谢谢合作 鬼泣4refrain 您可能感兴趣的话题 鬼泣4 核心提示 鬼泣4 是 鬼泣 系
  • ADworld_level_2

    以下是adworld里endust师傅的wp checksec扫描 使用ida打开可以发现 初始的buf的空间只有0x88 但是读取我们输入的内容的时候 选择的大小却是0x100 造成了溢出 通过这些 我们直接构建exp from pwn
  • HTTP Status 500 - An exception occurred processing JSP page 我真的看不出来

    1 2 7 8
  • RDBMS(关系型数据库)BLOB类型字段存储图片迁移问题完美解决方案

    目录 1 问题描述 2 问题查找 3 解决方法 1 表输入 2 执行SQL语句修改 1 问题描述 项目在RDBMS 关系型数据库 的mysql中使用BLOB类型字段存储了图片 由于需求问题 需要迁移图片到另外的一个RDBMS 关系型数据库
  • vue3的computed.ts

    vue3的computed ts import effect from effect class ComputedRefImpl public dirty true public value public effect constructo