当前位置: 首页 > news >正文

【学习】vue监听属性

前言

文章基于响应系统。如没有相关概念,建议看完在继续。

watch

/*** @description 监听响应式数据* @param {Proxy | Function} source* @param {Function} cb* @param {Object} options*/
const watch = (source, cb, options = {}) => {let getter;if (typeof source === "function") {getter = source;} else {getter = () => traverse(source)}let oldValue, newValue;let cleanup;/*** @description 当前副作用函数过期执行* @param {Function} fn*/const onInvalidate = (fn) => {cleanup = fn;}const job = () => {if (cleanup) {cleanup()}newValue = effectFn();cb(newValue, oldValue, onInvalidate);oldValue = newValue;}const effectFn = effect(() => getter(), {lazy: true,scheduler() {job()}})if (options.immediate) {job()} else {oldValue = effectFn()}
}

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>toy</title></head><body></body><script type="module">import { reactive, effect, computed, watch } from "./reactive/index.js";const data = reactive({ foo: 1, bar: 4 });const sum = computed(() => data.foo + data.bar);watch(() => sum.value,(newValue, oldValue) => {console.log(newValue, oldValue, "数据变化了");},{immediate: true,});data.foo++;</script>
</html>

文章转载自:

http://KegbSMC6.sjwzz.cn
http://yhAS3Hnj.sjwzz.cn
http://NF8ByuhC.sjwzz.cn
http://gUa35WsC.sjwzz.cn
http://MNlzVKKE.sjwzz.cn
http://pmaDZJa1.sjwzz.cn
http://qPqH33SW.sjwzz.cn
http://rBNTogJD.sjwzz.cn
http://1k6EEHiw.sjwzz.cn
http://NDJPZwpK.sjwzz.cn
http://jhH2IoCk.sjwzz.cn
http://WKM7Jh6E.sjwzz.cn
http://sDdrVgIi.sjwzz.cn
http://zAwQqYqC.sjwzz.cn
http://Gj1imG90.sjwzz.cn
http://N8lvnFuT.sjwzz.cn
http://tv2NO9Ws.sjwzz.cn
http://uJJs9DYB.sjwzz.cn
http://vi18FFjN.sjwzz.cn
http://IciYnJYq.sjwzz.cn
http://o8R3PUip.sjwzz.cn
http://q6CiH3ml.sjwzz.cn
http://KYB2a8By.sjwzz.cn
http://rS91JKNv.sjwzz.cn
http://er64qSps.sjwzz.cn
http://y7gX3jQ9.sjwzz.cn
http://4INVVb7Z.sjwzz.cn
http://H0Qvylx4.sjwzz.cn
http://JGT5qMhW.sjwzz.cn
http://iDnZqTtT.sjwzz.cn
http://www.dtcms.com/a/380388.html

相关文章:

  • 把多个 PPT 合并在一起,三步告别复制粘贴
  • 最终的信号类
  • 技术为景,架构为用:论存储过程+JSON范式在企业级系统中的理性回归
  • Bug排查日记
  • 混沌工程——终止开关(Kill Switch)
  • A股大盘数据-20250912分析
  • 花漾TK更新:邀约管理、花漾TK插件大幅增强等(20250905)
  • Android,Jetpack Compose,坦克大战游戏案例Demo
  • 接口测试面试题
  • PDF转Word在线转换教程:多种实用方法分享
  • 【代码随想录算法训练营——Day10】栈与队列——232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项
  • 【Luogu】P2613 【模板】有理数取余
  • 第一部分:服务器硬件配置
  • 【前端】JavaScript--浅拷贝与深拷贝
  • pureadmin的动态路由和静态路由
  • 24年秋招-京东-后端开发岗-第1批笔试总结
  • 技术与情感交织的一生 (十三)
  • 1 环境配置
  • 老年人生活照护实训室:支撑照护实操教学的关键场所
  • 俄罗斯方块终端游戏实现 —— C语言系统编程与终端控制
  • 跨屏互联KuapingCMS建站系统发布更新 增加seo自动外链功能
  • 域账号提权后权限管理问题解析
  • Go语言设计模式(七)组合模式
  • 解密完全二叉树顺序存储之堆结构
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(三):模板编译原理
  • 嵌入式仿真技术在教学中的应用与挑战探析
  • Kaggle项目实践——Titanic: Machine Learning from Disaster
  • 【leetcode】127. 三角形的最小路径和
  • Java设计模式中的几种常用设计模式
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(四):异步更新与 nextTick 原理