【Vue3+Ts】—— composition API(三)计算属性

本文详细探讨Vue3的Composition API,包括计算属性computed的两种用法,watchEffect的执行、停止与副作用清除,以及watch的使用和各种选项。文章还介绍了setup中使用ref、生命周期钩子、Provide与Inject函数,深入解析数据响应式和修改响应式Property。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

computed

watchEffect

 watchEffect的停止侦听

 watchEffect清除副作用

 setup中使用ref

watchEffect的执行时机 

 调整watchEffect的执行时机

Watch的使用

侦听单个数据源

 侦听多个数据源

 侦听响应式对象

watch的选项 

 生命周期钩子

 Provide函数

Inject函数 

 数据的响应式

修改响应式Property 


computed

 在前面我们讲解过计算属性computed:当我们的某些属性是依赖其他状态时,我们可以使用计算属性来处理

  • 在前面的Options API中,我们是使用computed选项来完成的;
  • 在Composition API中,我们可以在 setup 函数中使用 computed 方法来编写一个计算属性;

如何使用computed呢?

  • 方式一:接收一个getter函数,并为 getter 函数返回的值,返回一个不变的 ref 对象;
  • 方式二:接收一个具有 get 和 set 的对象,返回一个可变的(可读写)ref 对象;

  1. 第一步:先引入computed
    import { computed } from 'vue'
  2. 使用:写在setup内部
setup(){
      ...
  	//计算属性——简写
      let fullName = computed(()=>{
          return person.firstName + '-' + person.lastName
      })
      //计算属性——完整
      let fullName = computed({
      	// 读
          get(){
              return person.firstName + '-' + person.lastName
          },
          // 写
          set(value){
              const nameArr = value.split('-')
              person.firstName = nameArr[0]
              person.lastName = nameArr[1]
          }
      })

计算属性两种用法

给computed传入函数,返回值就是计算属性的值
给computed传入对象,get获取计算属性的值,set监听计算属性改变。这种写法适用于需要读写计算属性的情况

 Watch侦听数据的变化

在前面的Options API中,我们可以通过watch选项来侦听data或者props的数据变化,当数据变化时执行某一些操作。
在Composition API中,我们可以使用watchEffect和watch来完成响应式数据的侦听;

  • watchEffect用于自动收集响应式数据的依赖;
  • watch需要手动指定侦听的数据源;

watchEffect

当侦听到某些响应式数据变化时,我们希望执行某些操作,这个时候可以使用 watchEffect。
我们来看一个案例:

  • 首先,watchEffect传入的函数会被立即执行一次,并且在执行的过程中会收集依赖;
  • 其次,只有收集的依赖发生变化时,watchEffect传入的函数才会再次执行;

 watchEffect的停止侦听

 如果在发生某些情况下,我们希望停止侦听,这个时候我们可以获取watchEffect的返回值函数,调用该函数即可。
比如在上面的案例中,我们age达到20的时候就停止侦听:

 watchEffect清除副作用

什么是清除副作用呢?
比如在开发中我们需要在侦听函数中执行网络请求,但是在网络请求还没有达到的时候,我们停止了侦听器,或者侦听器侦听函数被再次执行了。

  • 那么上一次的网络请求应该被取消掉,这个时候我们就可以清除上一次的副作用;

 在我们给watchEffect传入的函数被回调时,其实可以获取到一个参数:onInvalidate

  • 当副作用即将重新执行 或者 侦听器被停止 时会执行该函数传入的回调函数;
  • 我们可以在传入的回调函数中,执行一些清楚工作;

 setup中使用ref

 在讲解 watchEffect执行时机之前,我们先补充一个知识:在setup中如何使用ref或者元素或者组件?
其实非常简单,我们只需要定义一个ref对象,绑定到元素或者组件的ref属性上即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值