Vue3 学习笔记 —— computed 和 watch

<template>
  <div>
    firstName: <input type="text" v-model="user.firstName">
    lastName: <input type="text" v-model="user.lastName">
  </div>
  <div>
    fullName1: <input type="text" v-model="fullName1">
    fullName2: <input type="text" v-model="fullName2">
    fullName3: <input type="text" v-model="fullName3">
  </div>
</template>

<script lang="ts">
// 需要引入 computed、watch
import { defineComponent, reactive, ref, computed, watch, watchEffect} from 'vue';

export default defineComponent({
  name: 'App',
  setup () {
    const user = reactive({
      firstName: 'a',
      lastName: 'b'
    })

	// 传入一个函数时,默认为 get
    const fullName1 = computed(()=>{
      return user.firstName + '_' + user.lastName
    })
	
	// 传入对象时,可以指定 get 和 set
    const fullName2 = computed({
      get() {
        return user.firstName + '_' + user.lastName
      },
      set(val: string) {
        let names = val.split('_')
        user.firstName = names[0]
        user.lastName = names[1]
      }
    })
    
    // 监听 user 的变化,变化时执行回调
    let fullName3 = ref('')
    watch(user, ({firstName, lastName})=>{
      fullName3.value = firstName + '_' + lastName
    }, {immediate: true})	// 初始时立即执行
	
	// 当 fullName3 变化时,执行回调
	watchEffect(()=>{
      let names = fullName3.value.split('_')
      user.firstName = names[0]
      user.lastName = names[1]
    })

    return {
      user,
      fullName1,
      fullName2,
      fullName3
    }

  }
});
</script>

在这里插入图片描述

  • watch 还可以监听基本类型
	// 监听基本类型时,需要写成箭头函数的形式
	// 监听多个类型时,需要传入数组
	// 只能监听响应式数据内的基本类型
    watch([()=>user.firstName, ()=>user.lastName], ()=>{
      console.log(1234)
    })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tanleiDD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值