vue3中toRef、toRefs和toRaw的使用

 更新时间:2024年05月13日 11:59:29   作者:猛扇赵四那半好嘴  
本文主要介绍了vue3中toRef、toRefs和toRaw的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.toRef

 toRef 的作用是将一个响应式对象中的属性转换成单独的响应式引用。转换后的响应式引用会跟踪原始属性的变化。转换后的响应式可以被用于计算属性监听器中。

如果原始对象是非响应式的则不会更新视图,数据会改变。

接收两个参数:

  • 参数一:原始对象;
  • 参数二:属性。
<template>
  <div>
    {{ man }}
  </div>
  <br />
  <div>
    <button @click="change">点击</button>
  </div>
</template>

<script setup lang="ts">
import { toRef, toRefs, reactive, toRaw } from 'vue'

const man = reactive({ name: '张三', age: 18, like: '唱' })
const like = toRef(man, 'like')
const change = () => {
  man.age = 19
  like.value = '跳'
  console.log(man)
}
</script>

点击前页面:

点击后结果:

2.toRefs

 toRefs 将一个对象的所有属性变成响应式引用,追踪原对象的引用关系。

原始对象如果是响应式的,则当修改属性值时,数据和视图都会更新;原对象如果非响应式,则修改属性值时,数据会更新,视图不更新。

接收一个参数:原始对象。

<template>
  <div>
    {{ man }}
  </div>
  <br />
  <div>
    <button @click="change2">点击2</button>
  </div>
</template>

<script setup lang="ts">
import { toRef, toRefs, reactive, toRaw } from 'vue'

const man = reactive({ name: '张三', age: 18, like: '唱' })
const { name, age } = toRefs(man)
const change2 = () => {
  name.value = '李四'
  age.value = 20
}
</script>

<style scoped></style>

 点击前页面:

点击后结果:

3.toRaw

 toRaw 将一个响应式对象变成非响应式。修改属性值时,数据会改变,视图不会更新。

接受一个参数:原始对象。 

<template>
  <div>
    {{ man }}
  </div>
  <br />
  <div>
    <button @click="change3">点击3</button>
  </div>
</template>

<script setup lang="ts">
import { toRef, toRefs, reactive, toRaw } from 'vue'

const man = reactive({ name: '张三', age: 18, like: '唱' })
const change3 = () => {
  // 手写toRaw
  console.log(man['__v_raw'])
  // 调用toRaw
  console.log(toRaw(man))
}
</script>

 点击前与点击后页面:

点击后结果:

到此这篇关于vue3中toRef、toRefs和toRaw的使用的文章就介绍到这了,更多相关vue3 toRef toRefs toRaw内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • vue3 父控件远程获取数据在子组件上显示不出来的解决方案

    vue3 父控件远程获取数据在子组件上显示不出来的解决方案

    这篇文章主要介绍了vue3 父控件远程获取数据,在子组件上显示不出来,本文给大家分享两种解决方案帮助大家解决这个问题,需要的朋友可以参考下
    2023-08-08
  • 浅谈vue项目4rs vue-router上线后history模式遇到的坑

    浅谈vue项目4rs vue-router上线后history模式遇到的坑

    今天小编就为大家分享一篇浅谈vue项目4rs vue-router上线后history模式遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue头部导航动态点击处理方法

    vue头部导航动态点击处理方法

    这篇文章主要介绍了vue头部导航动态点击处理方法,文中通过一段示例代码给大家介绍了vue实现动态头部的方法,需要的朋友可以参考下
    2018-11-11
  • LogicFlow内置菜单插件实例详解

    LogicFlow内置菜单插件实例详解

    这篇文章主要为大家介绍了LogicFlow内置菜单插件实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Nuxt pages下不同的页面对应layout下的页面布局操作

    Nuxt pages下不同的页面对应layout下的页面布局操作

    这篇文章主要介绍了Nuxt pages下不同的页面对应layout下的页面布局操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue响应式原理的示例详解

    Vue响应式原理的示例详解

    Vue 最独特的特性之一,是非侵入式的响应系统。数据模型仅仅是普通的 JavaScript 对象。而当你修改它们时,视图会进行更新。本文将通过示例详解Vue的响应式原理,感兴趣的可以了解一下
    2022-03-03
  • 基于vue实现网站前台的权限管理(前后端分离实践)

    基于vue实现网站前台的权限管理(前后端分离实践)

    这篇文章主要介绍了基于vue实现网站前台的权限管理(前后端分离实践),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue实现自定义多选与单选的答题功能

    vue实现自定义多选与单选的答题功能

    这篇文章主要介绍了使用vue实现自定义多选与单选的答题功能,vue组件中在表单方面提供了一个v-model指令,非常好用,具体实现过程大家跟随脚本之家小编一起看看吧
    2018-07-07
  • Vue修改mint-ui默认样式的方法

    Vue修改mint-ui默认样式的方法

    下面小编就为大家分享一篇Vue修改mint-ui默认样式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue提示框组件vue-notification使用详解

    Vue提示框组件vue-notification使用详解

    这篇文章主要介绍了Vue提示框组件vue-notification使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论