广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3中ref与toRef的区别浅析
  • 765
分享到

Vue3中ref与toRef的区别浅析

2024-04-02 19:04:59 765人浏览 泡泡鱼
摘要

1. ref是复制,视图会更新 如果利用ref将某一个对象中的某一个属性值变成响应式数据 我们修改响应式数据是不会影响原始数据的; 同时视图会跟新。 ref就是复制 复制是不会影响原

1. ref是复制,视图会更新

如果利用ref将某一个对象中的某一个属性值变成响应式数据

我们修改响应式数据是不会影响原始数据的;

同时视图会跟新。

ref就是复制 复制是不会影响原始数据的


<template>
 <div>
    <div>
      <div>{{stateObj}}</div>
       <button @click="func1">按钮</button>
    </div>
 </div>
</template>
<script>
import {ref} from 'Vue'
export default {
  name: 'App',
  setup(){
    let obj={name:"张三",age:22}
    
    //将对象中的某一个属性
    //变成响应式数据
    //而不是将对象变成响应式数据
    let stateObj=ref(obj.name)
    function func1(){
      stateObj.value="张三变成李四";
      //原始数据没有发生改变 原始数据obj {name: "张三", age: 22}
      console.log("原始数据obj",obj)

      //响应式数据发生改变了  
      
      //变成了一个ref的对象
      console.log("响应式stateObj",stateObj)

    }

    return {stateObj,func1}
},
}
</script>

2.toRef是引用,视图不跟新

如果利用toRef将某一个对象中的属性变成了响应式的数据

我们修改响应式的数据是会影响原始数据的

如果数据是通过toRef创建的,修改值后,数据不会触发视图

toRef是引用;它引用的是以前那个对象中的属性

所以你修改后,会影响到原始数据终中的值


<template>
 <div>
    <div>
      <div>{{state}}</div>
       <button @click="func1">按钮</button>
    </div>
 </div>
</template>
<script>
import {toRef} from 'vue'
export default {
  name: 'App',
  setup(){
    let obj={name:"张三",age:22}
    //将对象中的某一个属性name变成响应式数据
    //而不是将对象变成响应式数据
    let state=toRef(obj, 'name');
    console.log('toRef',state)
    function func1(){
      state.value="我是李四";
      console.log('obj',obj)
      console.log('state',state)
    }
    return {state,func1}
  },
}
</script>

3.结论

ref复制, 修改响应式数据,不会影响以前的数据,界面会更改。

toRef引用, 修改响应式的数据,会影响以前的数据,界面不会更新。

toRef的使用场景

如果想让响应式数据和原始数据关联起来。

并且更新响应式数据后,不想视图更新;那么就可以使用toRef

小结:

ref和toRef的区别

(1). ref本质是拷贝,修改响应式数据不会影响原始数据;toRef的本质是引用关系,修改响应式数据会影响原始数据

(2). ref数据发生改变,界面会自动更新;toRef当数据发生改变是,界面不会自动更新

(3). toRef传参与ref不同;toRef接收两个参数,第一个参数是哪个对象,第二个参数是对象的哪个属性

总结

到此这篇关于vue3中ref与toRef区别的文章就介绍到这了,更多相关Vue3 ref与toRef区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue3中ref与toRef的区别浅析

本文链接: https://www.lsjlt.com/news/128880.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue3中ref与toRef的区别浅析
    1. ref是复制,视图会更新 如果利用ref将某一个对象中的某一个属性值变成响应式数据 我们修改响应式数据是不会影响原始数据的; 同时视图会跟新。 ref就是复制 复制是不会影响原...
    99+
    2022-11-12
  • 浅谈vue3中ref、toRef、toRefs 和 reactive的区别
    目录一、ref——定义任意类型响应式数据二、reactive——定义响应式对象三、toRef——将一个 rea...
    99+
    2022-11-13
  • Vue3中ref toRef和toRefs的区别有哪些
    这篇文章主要为大家展示了“Vue3中ref toRef和toRefs的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue3中ref toRef和toRefs的区别...
    99+
    2023-06-22
  • Vue3中toRef与toRefs的区别
    作用:创建一个ref对象,其value值指向另外一个对象中的某个属性。这样在模板中就可以直接使用属性名而不用麻烦的再加对象名前缀了。 语法: const name = toRef(p...
    99+
    2022-11-13
  • Vue3中toRef与toRefs的区别是什么
    这篇文章主要讲解了“Vue3中toRef与toRefs的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3中toRef与toRefs的区别是什么”吧!作用:创建一个ref对象,...
    99+
    2023-06-29
  • vue3 中ref和reactive的区别讲解
    1. ref和reactive区别:    如果在template里使用的是ref类型的数据, 那么Vue会自动帮我们添加.value    ...
    99+
    2022-12-19
    vue3 ref和reactive的区别 vue3 ref和reactive vue  ref和reactive的区别
  • 浅析php中==与===的区别
    在PHP中,有时候我们需要比较两个变量是否相等。为了实现这个功能,我们可以使用等于操作符“==”或者全等操作符“===”。虽然两个操作符都可以完成相等比较,但是它们之间还是存在一些差别。在本文中,我们将分别介绍“==”和“===”的具体作用...
    99+
    2023-05-14
    === == php
  • Vue3中ref和reactive的基本使用及区别详析
    目录前言ref—计数器案例reactive—计数器案例区别类似使用ref类似使用 reactive附:ref和reative的使用心得总结前言 今天给大家讲一...
    99+
    2022-11-13
  • Vue3.0中Ref与Reactive的区别示例详析
    目录Ref与Reactive Ref ReactiveRef与Reactive的区别 shallowRef 与shallowReactive toRaw ---只修改数据不渲染页面 ...
    99+
    2022-11-12
  • Vue3中emits与attrs的区别分析
    目录结论实践分析扩展总结结论 当在父组件自定义事件,若没有在子组件中声明时,将自动绑定在父组件的$attrs上;而当在子组件声明时,则不会在父组件的$attrs上出现 实践分析 ...
    99+
    2022-11-12
  • Vue中created与mounted的区别浅析
    大多数人在谈论生命周期钩子时会感到困惑的一件事是 created 和 mounted 之间的区别。有着相似的名称,觉得应该做同样的事情,但还是有一些细微的差别。 首先,created...
    99+
    2022-11-13
  • Mysql中undo、redo与binlog的区别浅析
    目录前言【undo log】 【redo log】 【binlog】 总结前言 MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制...
    99+
    2022-11-12
  • 深入浅析java中TCP与UDP的区别
    深入浅析java中TCP与UDP的区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TCP/UDP:TCP主要是面向连接的协议,它包含有建立和拆除连接,保证数据流的顺序和正...
    99+
    2023-05-31
    java tcp udp
  • Kotlin语言中CompileSdkVersion与targetSdkVersion的区别浅析
    目录前言一.CompileSdkVersion与targetSdkVersion是什么1.1 compileSdkVersion1.2 targetSdkVersion二.compi...
    99+
    2023-02-23
    Kotlin CompileSdkVersion与targetSdkVersion的区别 Kotlin CompileSdkVersion
  • 浅析Java中String与StringBuffer拼接的区别
    学习笔记:  1、String拼接会创建一个新的String对象,存储拼接后的字符串;    StringBuffer拼接是直接在本身拼接,会即时刷新。  2.String只能拼接String类型的字符串;    StringBuffer能...
    99+
    2023-05-31
    java string stringbuffer
  • 深入浅析Android中DecorView与ViewRootImpl的区别
    今天就跟大家聊聊有关深入浅析Android中DecorView与ViewRootImpl的区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。从setContentView说起一般地,...
    99+
    2023-05-31
    android viewrootimpl decorview
  • Vue3.0中Ref与Reactive的区别是什么
    这篇文章主要介绍“Vue3.0中Ref与Reactive的区别是什么”,在日常操作中,相信很多人在Vue3.0中Ref与Reactive的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3.0中...
    99+
    2023-06-20
  • Vue中Ref与Reactive的区别是什么
    今天小编给大家分享一下Vue中Ref与Reactive的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Ref与Re...
    99+
    2023-06-05
  • vue3中watch与watchEffect的区别
    目录vue3中watch与watchEffect的区别watch refwatch reactivewatchEffect对比扩展:vue3中的 watchEffect 和 watc...
    99+
    2023-02-17
    vue3 watch与watchEffect的区别 vue3 watch与watchEffect用法 vue3 watch与watchEffect
  • php类中static与self的使用区别浅析
    使用 self:: 或者 __CLASS__ 对当前类的静态引用,取决于定义当前方法所在的类: 使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作