Vue3.0+ts—watch使用【TypeScript】

本文介绍了如何在Vue中使用ref、reactive声明响应式变量,并通过watch来监听这些变量的变化。具体包括创建响应式的数组变量,修改数组值的方法以及如何设置页面加载时立即触发的监听器。

引入Vue的对象 ref , reactive, watch

ref 用来声明响应式的基础类型的变量

reactive用来声明响应式的对象类型的变量

watch 引入watch对象,以便调用

import {ref, reactive, watch} from 'vue'

声明一个数组变量

export default {
  setup(props){
	let infoList = reactive([
      {
        name:'张三',
        value: '24'
      },
      {
        name:'李四',
        value: '25'
      }
    ])
    return {
		infoList
	}
  }
}

绑定事件

<button @click="changeInfoList"></button>

改变数组的值

export default {
  setup(props){
	let infoList = reactive([
      {
        name:'张三',
        value: '24'
      },
      {
        name:'李四',
        value: '25'
      }
    ])
    function changeInfoList() {
		infoList[0].value = '26'
	}
    return {
		infoList,
		changeInfoList
	}
  }
}

watch监听变量

export default {
  setup(props){
	let infoList = reactive([
      {
        name:'张三',
        value: '24'
      },
      {
        name:'李四',
        value: '25'
      }
    ])
    function changeInfoList() {
		infoList[0].value = '26'
	}
	watch(infoList ,(newVal,oldVal)=> {
      console.log(newVal)
      }
    })
    return {
		infoList,
		changeInfoList
	}
  }
}

watch 加载页面就触发

watch(infoList ,(newVal,oldVal)=> {
      console.log(newVal)
      }
    },
    {immediate:true}
)
### Vue 3使用 TypeScript 实现 Watch 监听功能 在 Vue 3 中,结合 TypeScript 使用 `watch` 功能可以通过 Composition API 或 Options API 来实现。以下将分别介绍两种方式的使用方法及示例。 #### 1. 使用 Composition API 实现 Watch Vue 3 的 Composition API 提供了更灵活的方式来管理组件逻辑。通过 `watch` 函数可以监听响应式数据的变化,并执行相应的回调函数。 ```typescript <template> <div> <input v-model="msg" placeholder="请输入内容" /> <p>监听结果: {{ inputWatch }}</p> </div> </template> <script lang="ts"> import { defineComponent, ref, watch } from &#39;vue&#39;; export default defineComponent({ setup() { const msg = ref<string>(&#39;&#39;); // 定义一个响应式字符串变量 const inputWatch = ref<string>(&#39;&#39;); // 定义一个用于存储监听结果的变量 // 使用 watch 监听 msg 的变化 watch( msg, (newVal: string, oldVal: string) => { inputWatch.value = `${newVal} world`; // 更新 inputWatch 的值 }, { immediate: true, deep: true } // 配置选项:立即执行和深度监听 ); return { msg, inputWatch }; // 返回需要在模板中使用的变量 }, }); </script> ``` 上述代码展示了如何在 Composition API 中使用 `watch` 函数[^1]。`watch` 接受三个参数: - 第一个参数是需要监听的目标(可以是单个或多个响应式引用)。 - 第二个参数是回调函数,当目标发生变化时会触发此函数。 - 第三个参数是可选配置对象,包含 `immediate` 和 `deep` 属性。 #### 2. 使用 Options API 实现 Watch 在 Options API 中,`@Watch` 装饰器或 `watch` 方法都可以用来监听数据的变化。以下是一个基于装饰器的方式实现的例子。 ```typescript <template> <div class="hello"> <el-input v-model="msg" placeholder="请输入内容"></el-input> <div> <span>我是watch 在输入内容后 加 world--</span>{{ inputWatch }} </div> </div> </template> <script lang="ts"> import { Component, Prop, Vue, Watch } from &#39;vue-property-decorator&#39;; @Component export default class HelloWorld extends Vue { private msg: string = &#39;测试&#39;; // 定义初始值 private inputWatch: string = &#39;&#39;; // 定义监听结果变量 @Watch(&#39;msg&#39;, { immediate: true, deep: true }) // 使用 @Watch 装饰器监听 msg onChangeValue(newVal: string, oldVal: string): void { this.inputWatch = `${newVal} world`; // 更新 inputWatch 的值 } } </script> ``` 这段代码展示了如何通过 `@Watch` 装饰器来监听 `msg` 的变化[^3]。`@Watch` 的第二个参数是一个配置对象,其中 `immediate` 表示是否在初始化时立即执行回调函数,`deep` 表示是否进行深度监听。 #### 注意事项 - 避免在 TypeScript 中滥用 `any` 类型,这会导致失去类型检查的意义[^2]。 - 在使用 `watch` 时,确保正确设置 `immediate` 和 `deep` 参数以满足具体需求。 - 如果需要监听多个数据源,可以传递一个数组作为 `watch` 的第一个参数。 ### 总结 无论是使用 Composition API 还是 Options API,在 Vue 3 中结合 TypeScript 实现 `watch` 功能都非常直观且强大。选择哪种方式取决于项目的架构和个人偏好。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值