首页 > 其他分享 >vue3的ref、reactive、toRef、toRefs

vue3的ref、reactive、toRef、toRefs

时间:2023-12-30 20:12:27浏览次数:19  
标签:name toRefs toRef reactive job ref

用处:用于在setup中创建响应式变量

导出:import { ref, reactive, toRef, toRefs } from 'vue'

区别:

ref 用来定义基础数据类型,String, Number, Boolean, Symbol;通过 Object.defineProperty() 的get和set来实现响应式;js操作数据需要 .value,模版中读取不需要.value

reactive 用来定义对象或数组;通过 Proxy 来实现响应式,并通过 Reflect 操作源对象内部的数据;读写均不需要 .value

toRef 将 reactive 中的某个属性创建一个 ref 对象,const name = toRef(Person, 'name')

toRefs 将 reactive 中的所有属性创建成 ref 对象, ...toRefs(person)

例子:

<template>
  <div class="demo">
    <h2>姓名:{{ name }}</h2>
    <h3>岗位:{{ job.type }}</h3>
    <h3 v-show="job.age">年龄:{{ jbo.age }}</h3>
    <button @click="updateInfo()">更新</button>
  </div>
</template>
<script lang="ts">
  import { defineComponent, ref, reactive } from 'vue'
  export default defineComponent({
    setup () {
      let name = ref('张三');
      let job:any = reactive({
        type: 'web前端',
        workAge: 16
      })
      function updateInfo() {
        name.value = '李四'
        job.type = 'Java'
        delete job.workAge
        job.age = 18
      }
      return {
        name,
        job,
        updateInfo
      }
    }
  })
</script>

toRef 和 toRefs

setup () {
  let person = reactive({
    name: '张三',
    job: {
      j1: { age: 18 }
    }
  })
  return {
    person,
    name1: person.name, //解构后模版中直接使用name,但是属性不再具有响应性
    name2: toRef(person, 'name'), //通过toRef来转换成ref对象
    ...toRefs(person), //批量转换成ref对象
  }
}

 

标签:name,toRefs,toRef,reactive,job,ref
From: https://www.cnblogs.com/yuantai/p/17936735

相关文章

  • vue3中toRefs用法
    toRefs是Vue.js3中的一个实用函数,用于将响应式对象转换为普通对象,其中每个属性都是一个ref对象。这在某些情况下很有用,特别是想要将一个包含多个响应式属性的对象传递给子组件时。以下是toRefs的基本用法:import{reactive,toRefs}from'vue';constreactiveObject=reac......
  • isRef()、unRef()、toRef()、toRefs()深度解析,为啥解构会失去响应式?
    前言isRef()、unRef()、toRef()、toRefs()这几个函数他们各自都有什么功能,在什么场景下应用以及有哪些细节是我们没有注意到的,我们一起来看一下,为了方便大家理解和对照,这里以官方文档说明+解析的方式讲解。isRef()检查某个值是否为ref。类型tsfunctionisRef<T>(r:Ref......
  • vue3 reactive对象的watch
    代码<scriptsetup>import{ref,reactive,watch}from'vue'constobj=reactive({count:0})constyourKnow0=ref('')constyourKnow1=ref('')letcnt=0watch(obj,(newValue,oldValue)=>{//在嵌套的属性变更时触发......
  • 重置Citrix StoreFront服务器
    使用卸载的SF方法,可能会卸载失败,所以建议采用清除配置,如果清除配置也失败,重新安装一台SF即可。#使用管理员权限运行powershell,定义powershell路径$env:PSModulePath=[Environment]::GetEnvironmentVariable('PSModulePath','Machine')#导入SF的powershell模块Import-Modul......
  • Vue3 中的hook函数和 toRef(toRefs)
    一、自定义hook函数  1、什么是hook?      本质是一个函数,把setup函数中使用的CompositionAPI进行了封装  2、类似于vue2.x中的mixin  3、自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂。二、toRef  1、作用:创建一个ref对象,其valu......
  • 关于 Storefront Site Context 的概念介绍
    电商平台中Site模型的详细介绍在电商平台开发中,Site(网站)模型是一个至关重要的概念,它在内容管理系统(CMS)中扮演着关键角色。每个在CMS中定义的网站都拥有其自身的上下文,这个上下文包括基本网站ID、语言属性和货币属性。此外,上下文还定义了如何在URL中持久化这些属性。通过在spart......
  • Vue3| 组合式API——reactive 和 ref 函数
    Vue中默认的数据并不是响应式的,如果我们希望数据是响应式的,则需要通过reactive或者ref进行处理。 reactive():作用:接收对象类型的数据作为参数传入并返回一个响应式对象reactive不能处理简单类型的数据 reactive使用步骤:1.在<scriptsetup>里,从vue包中导入......
  • 创建vue3项目、setup函数、ref函数、reactive函数、计算监听属性、生命周期、torefs、
    创建vue3项目#两种方式-vue-cli:vue脚手架---》创建vue项目---》构建vue项目--》工具链跟之前一样-vite:https://cn.vitejs.dev/-npmcreatevue@latest一路选择即可#运行vue3项目-vue-cli跟之前一样-vi......
  • Vue3中shallowReactive 与 shallowRef 的用法
    转自:https://blog.csdn.net/qq_54527592/article/details/119840044  shallowReactive与shallowRef   shallowReactive:只处理对象最外层属性的响应式(浅响应式)。   shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。   什么时候使用?     ......
  • [Compose] Asynchronous Reactive Data with Promises
    Let’smakeusingtheobserversasynchronous!Thiswaywecanupdatethedataandhavemultipleobserversrunasynchronously.classAsyncData{constructor(initialData){this.data=initialData;this.subscribers=[];}//Subscribetochan......