vue + ts 项目中watch的用法

2023-11-09

 要使vue支持ts写法,我们需要用到vue-property-decorator这个组件完全依赖于vue-class-componet

首先安装:

npm i -D vue-property-decorator

@Watch(path: string, options: WatchOptions = {}) 

@Watch装饰器接受两个参数:

  • path: string类型,表示需要被监听的属性名;
  • options?: WatchOptions = {} 包含两个属性: 
    immediate?: boolean 监听开始后是否立即调用该回调函数; 
    deep?: boolean 表示是否深度监听

使用Demo如下:

<template>
  <div class="watchPage">
    <h1>child: {{child}}<input type="text" v-model="child"/></h1>
    <h1>person.name: {{person.name}}<input type="text" v-model="person.name"/></h1>
  </div>
</template>

<script lang="ts">
// 从vue-property-decorator中引入Component、Watch、Vue
import { Component, Vue, Watch } from 'vue-property-decorator';

@Component
export default class WatchPage extends Vue {
  child = ''
  person = {
    name: 'zxx'
  }
  @Watch('child')
  onChildChanged(val: string, oldVal: string) {
    console.log(val, oldVal);
  }

  @Watch('person', { immediate: true, deep: true })
  onPersonChanged(val: Person, oldVal: Person) {
    console.log(val, oldVal);
  }
}
</script>

以上script中代码等同于:

export default {
  data() {
    return {
      child: '',
      person: {
        name: 'zxx'
      }
    }
  }
  watch: {
    child: [
      {
        handler: 'onChildChanged',
        immediate: false,
        deep: false,
      },
    ],
    person: [
      {
        handler: 'onPersonChanged',
        immediate: true,
        deep: true,
      }
    ],
  },
  methods: {
    onChildChanged(val, oldVal) {
      console.log(val ,oldVal);
    },
    onPersonChanged(val, oldVal) {
      console.log(val ,oldVal);
    }
  },
}

 参考资料: https://github.com/kaorun343/vue-property-decorator

 

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

vue + ts 项目中watch的用法 的相关文章

随机推荐

  • 引用账户锁定无法登录_win10登陆失败提示引用的帐户已被锁定无法登录怎么办?...

    win10系统出现了一个问题 登录失败提示 引用的帐户当前已被锁定 可能无法登录到 这是因为一直在登录界面输入错误的密码超过五次 就会被锁定导致的 该怎么解决这个问题呢 下面我们就来看看这个问题的多种解决办法 一 问题描述 1 引用的帐户目
  • HTML+CSS+JavaScript入门教程(万字)

    前言 作为一名后端开发人员 开发过程中 必不可少的与前端进行对接 因此尽管是后端开发者 也需要一定的前端知识 因此写下HTML CSS JavaScript入门知识 着重介绍了JavaScript 方便自己复习 也各位小伙伴参考 一 HTM
  • 如何营造办公室的友好氛围

    办公室有时就是一个小社会 人多嘴杂 面对各种利益冲突 你必须找准角色定位 既不能孤芳自赏 又不能表现过度 如何迅速赢得大多数人的好感 尽快融入其中 营造良好的人际关系呢 办公室5大忌 1 切忌拉小圈子 互散小道消息 办公室内切忌私自拉帮结派
  • C语言关键字之 volatile

    本文记录了C语言中 Volatile 关键字的作用 目录 变量使用 volatile 修饰 volatile 使用场景 多线程下的volatile 变量使用 volatile 修饰 告诉编译器 该变量随时会发生变化 每次使用该变量直接到内存
  • java 带参数转发_Nginx 根据URL带的参数转发的实现

    使用场景 需要根据截取url动态配置跳转路径 常见于访问内网不固定ip地址的文件图片 请求地址 http 11 19 1 212 82 bimg4 32 52 62 42 222 downloadfile filename loc 12 d
  • WPS Office AI实战:Word写作如有“神”助

    打开电脑 基本上你就会与文档打交道 是时候升级处理文档的方式了 WPS AI 的出现 给了文档处理提供了新的范式 生成文档 根据提示词生成新内容 文档分析 快速了解文档核心要点 节省阅读时间 根据你感兴趣的内容 推荐相关问题 使用WPS A
  • 【Postman】请求错误解决

    author 咔咔 wechat fangkangfk 在我们不能正常请求的时候考虑的几个问题 防火墙问题 有些防火墙可能被配置为阻止非浏览器连接 在这种情况下 应该与网络管理员联系 以便Postman可以正确工作 代理配置问题 如果我们使
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627

    摘 要 本论文主要论述了如何使用JAVA语言开发一个高校选课系统 本系统将严格按照软件开发流程进行各个阶段的工作 采用B S架构 面向对象编程思想进行项目开发 在引言中 作者将论述高校选课系统的当前背景以及系统开发的目的 后续章节将严格按照
  • linux查看ipv6 dns,云解析DNS IPv6

    转自 什么是IPV6 答 IPv6是英文 Internet Protocol Version 6 互联网协议第6版 的缩写 是互联网工程任务组 IETF 设计的用于替代IPv4的下一代IP协议 由于IPv4在网络地址资源有限 严重制约了互联
  • python: extend (扩展) 与 append (追加) 的差别

    http justjavac iteye com blog 1827915 gt gt gt li a b c gt gt gt li extend d e f gt gt gt li a b c d e f gt gt gt len li
  • 新版eclipse编写Android 时经常报的错误 -support-v7

    一 和以往一样新建完一个Android项目之后 会报android support v4 或者V7找不到的错误 这是因为这两个包在另一个附带的项目 android support v7 appcompat 下 解决办法 右键你刚才建 的项目
  • OpenCV3 VideoCapture出错Connection to tcp://192.168.15.11:554?timeout=0 failed: No route

    tcp 0x2261180 Connection to tcp 192 168 15 11 554 timeout 0 failed No route to host joinus test 7689 GStreamer CRITICAL
  • Harbor主从

    一 harbor主从方案 1 主备 简单 主挂了切到备Harbor 同一时间只有一台提供服务 适合少量镜像下载 2 双主复制 双向配置复制 两台同时提供服务 前面增加负载均衡器 3 一主多从 多个从同步主 适合多地区业务 大量镜像下载需求
  • sqli-lab学习笔记(学习笔记)(21-30)

    打完21 30之后的后记 后来发现 网上所有就是讲解sqli的 到后面都没有用查有多少字段数的order by这个语句 几乎都没有提到过 我自己也尝试在后面的变形中加入加入进去但是不知道为什么老是出错 现在我想到的办法就是 比如28a关 语
  • 游戏开发Unity杂项知识系列:Microsoft Visual C++ 2015 安装失败 0x80070666-已安装这个产品的另一个版本

    参考 https blog csdn net qq 44781435 article details 108629616 总结 系统有了一个更高版本的vc 但是与所需不匹配 必须先卸载高版本的然后再安装目标版本
  • Python Selenium搭建UI自动化测试框架

    自动化测试是软件测试中非常重要的一部分 可以提高测试效率和测试覆盖率 在UI自动化测试中 Selenium是非常流行的工具 本文将介绍如何使用Python和Selenium搭建UI自动化测试框架 一 环境准备 在开始搭建UI自动化测试框架之
  • JavaScript资源大全中文版(Awesome最新版)

    Awesome系列的JavaScript资源整理 awesome javascript是sorrycc发起维护的 JS 资源列表 内容包括 包管理器 加载器 测试框架 运行器 QA MVC框架和库 模板引擎 数据可视化 时间轴 编辑器等 前
  • Elasticsearch安装IK分词器、配置自定义分词词库

    一 分词简介 1 单字分词 2 二分法分词 3 词库分词 二 配置IK中文分词器 三 配置自定义分词拓展词库 一 分词简介 在Elasticsearch中 假设搜索条件是 华为手机平板电脑 要求是只要满足了其中任意一个词语组合的数据都要查询
  • 自学软件测试6个月,找到了月薪8.5K的工作,多亏了这套学习方法

    8 5K的薪资也许对csdn的各位大佬来说并不算什么 但是对于我这种曾经在工厂 每月工资才4000左右的人来说 已经是巨大的改变了 文中附我的学习心得及学习资料 其实我在很早就对编程感兴趣 只是一直缺乏学习的动力 刚好在去年疫情期间 厂里停
  • vue + ts 项目中watch的用法

    要使vue支持ts写法 我们需要用到vue property decorator 这个组件完全依赖于vue class componet 首先安装 npm i D vue property decorator Watch path stri