vue3的to系列全家桶---kalrry

vue3的to系列全家桶---kalrry

简介

to系列包含 toRef、toRefs、toRaw

一、toRef

  1. 只能用于修改响应式(reactive)的值
  2. 非响应式的无变化
  3. toRef接受两个参数,第一个是对象,第二个是对象的key,相当于把这个对象的key对应的值取出来变成一个ref对象,使之成为响应式

实例



import { ref, reactive, toRef } from 'vue';
import type { Ref } from 'vue'

const man = reactive({ name: '小满', age: '23', like: 'kalrry' })
const like1 = toRef(man, 'like')
const change1 = () => {
  man.like = 'unakey已修改'
  console.log('man.like', man.like);
  console.log('like', like1);

}

二、toRefs

toRefs是给对象的每一个添加ref响应式
toRefs源码实现

const toRefs = <T extends object>(object: T) => {
  const map: any = {}
  for (let key in object) {
    map[key] = toRef(object, key)
  }
  return map
}

实例

import { ref, reactive, toRef, toRefs } from 'vue';

const man = reactive({ name: '小满', age: '23', like: 'kalrry' })
const like1 = toRef(man, 'like')

// const toRefs = <T extends object>(object: T) => {
//   const map: any = {}
//   for (let key in object) {
//     map[key] = toRef(object, key)
//   }
//   return map
// }
调用man对象的每一个值赋予ref响应式
const { name, age, like } = toRefs(man)
const change1 = () => {
  name.value='k8888'
  console.log('name,age,like', name, age, like)
}

传送门

三、toRaw

toRaw可以让响应式数据脱离响应式
实例


import { ref, reactive, toRaw, toRef,toRefs } from 'vue';

const man = reactive({ name: '小满', age: '23', like: 'kalrry' })
const change1 = () => {
  console.log('man', man,toRaw(man))
}

如下图输出
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kalrry

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

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

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

打赏作者

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

抵扣说明:

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

余额充值