Fork me on GitHub

vue3的ref、reactive、toRef、toRefs

用处:用于在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对象
  }
}
复制代码

 

posted @   树山君  阅读(54)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示