当前位置: 首页 > news >正文

Vue学习笔记-Vue3中ref和reactive函数的使用

前言

为了让vue3中的数据变成响应式,需要使用ref,reactive函数

ref函数使用方式

  • 导入ref函数

    import {ref} from 'vue'
    
  • 在setup函数中,将需要响应式的数据通过ref函数进行包装,修改响应式数据时,需要通过:
    ref包装的响应式对象.value = 修改后的数据这种形式进行修改

    export default {name: 'App',components: {......},setup(){//数据定义let name = ref('张三')let age = ref(18)let job = ref({type:'前端工程师',salary:'30k'})//定义函数function changeInfo(){name.value = '李四'age.value += 1job.value.type = '后端工程师'job.value.salary = '50k'/*console.log(name,age)*/}//setup必须有返回值,将上述定义的响应式数据,以及函数进行返回return {name,age,job,changeInfo}}
    }
    

reactive函数使用方式

  • 导入reactive函数

    import {reactive} from 'vue'
    
  • reactive函数用于处理对象类型以及数组类型的响应式数据(ref处理对象类型的数据也借助了reactive的帮助),并且处理后返回的对象不需要使用.value后缀,用法模板为:
    const 代理对象 = reactive(源对象),该代理对象实质上是Proxy的实例对象

    export default {name: 'App',components: {},setup(){//数据定义/*为了方便起见,可以将之前定义的数据整合到一个对象中,这样即方便管理,也可以统一由reactive函数处理*/let person = reactive({name : '李四',age:18,job:{type:'前端工程师',salary:'60k'},hobbies:['抽烟','喝酒','烫头']})//定义函数function changeInfo(){person.name = '王五'person.age+=1person.job.type='后端工程师'person.job.salary='50k'person.hobbies[0] = '学习'}//setup必须有返回值return {person,changeInfo}}
    }
    

reactive对比ref总结

  • 从定义数据角度对比:
    ref用来定义:基本类型数据
    reactive用来定义:对象或数组类型数据
    备注:ref也可以用来定义对象或数组类型数据,它内部会通过reactive转为代理对象
  • 从原理角度对比:
    ref通过Object.defineProperty()get()set()来实现响应式(数据劫持)
    reactive通过Proxy来实现响应式(数据劫持),并通过Reflect操作源对象内部数据
  • 从使用角度对比:
    ref定义的数据:操作数据需要附带.value,读取数据时,从模板中直接读取,不需要.value
    reactive定义的数据:操作数据与读取数据均不需要.value
http://www.lryc.cn/news/257857.html

相关文章:

  • 大数据分析与应用实验任务十一
  • “78Win-Vận mệnh tốt”Trang web hỗ trợ kỹ thuật
  • React中使用react-json-view展示JSON数据
  • 一文简述“低代码开发平台”到底是什么?
  • HNU计算机体系结构-实验3:多cache一致性算法
  • Go语言学习路线规划
  • 微软NativeApi-NtQuerySystemInformation
  • 灵活与高效的结合,CodeMeter Cloud Lite轻云锁解决方案
  • Flink 系列文章汇总索引
  • 计算机网络——期末考试复习资料
  • 【数据结构】面试OJ题——链表
  • flask web开发学习之初识flask(三)
  • 【设计模式-3.1】结构型——外观模式
  • flutter学习-day2-认识flutter
  • 解决selenium使用.get()报错:unknown error: unsupported protocol
  • 关于加密解密,加签验签那些事
  • 容器重启后,Conda文件完整保存(虚拟环境、库包),如何重新安装conda并迁移之前的虚拟环境
  • gitee对接使用
  • C语言中的一维数组与二维数组
  • 【Linux】地址空间
  • 作为一个产品经理带你了解Axure的安装和基本使用
  • 接口测试总结及其用例设计方法
  • 2023团体程序设计天梯赛——模拟赛和总决赛题
  • 智能优化算法应用:基于人工蜂鸟算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 视频中自监督学习:「我的世界」下指令理解与跟随
  • Spring基于xml半注解开发
  • 功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试,具体是干嘛的?
  • oracle 下载java之前版本
  • LLM之Agent(四)| AgentGPT:一个在浏览器运行的Agent
  • AGM离线下载器使用说明