Vue3-03-reactive() 响应式基本使用

reactive() 的简介

复制代码
reactive() 是vue3 中进行响应式状态声明的另一种方式;
但是,它只能声明 【对象类型】的响应式变量,【不支持声明基本数据类型】。

reactive() 与 ref() 一样,都是深度响应式的,即对象嵌套属性发生了改变,页面中都会重新刷新。

reactive() 声明的对象变量,可以直接使用它的属性值,无需像 ref() 一样使用 [.value] 的方式读取变量的值。

reactive()  函数返回的是对象的一个代理对象,这个代理对象可以直接操作属性,且这个代理对象是唯一的,
即 同一个对象 多次调用 reactive() 函数,返回的是同一个代理对象。

reactive() 对象解构之后的属性,不具有响应式。

reactive() 对象的值单独传入函数中作为参数时,不具有响应式。

基本使用案例

html 复制代码
<template>
    <div>
       stu: {{ stu }}
       <br>
       numList : {{ numList }}
    </div>
</template>
    
<script setup lang="ts">

    // 引入 reactive
    import {reactive} from "vue"

    // 声明响应式状态 : 必须是一个对象类型
    const stu = reactive({
        id:'001',
        name:'小明',
        classInfo:{
            classId:1001,
            className:'开心一班',
        }
    })

    const numList = reactive([1,2,3,4])

    // 打印一下 响应式的变量,直接打印,无需使用 【.value】 进行值的获取
    console.log('stu : ',stu)
    console.log('numList : ',numList)

</script>
    
<style scoped>
</style>

reactive() 添加数据类型限制

复制代码
官方提示 :不推荐 给 reactive() 使用泛型的方式进行类型限制!

方式一 : 自动类型推导

复制代码
这也是ts的自有特性,因为 reactive() 是封装对象的,所以,自动类型推导也会推导为一个对象类型。
js 复制代码
	// 会自动推导为 {name:string} 类型
    const job = reactive({name:'程序员'})
    console.log('job',job)

方式二 :显示的标注类型

复制代码
如果想给reactive() 添加类型,笔者比较推荐这种方式,
这样程序代码比较清晰,可维护性更高。

可以通过自己定义 接口的方式,进行类型的标注。
这个就纯纯的是ts的知识点了。
js 复制代码
    // 声明一个接口,作为数据类型规范
    interface Job{
        name:string
    }
    // 显式的指定变量的类型
    const job : Job = reactive({name:'程序员'})
    console.log('job',job)
相关推荐
RuoyiOffice3 天前
2026最推荐基于SpringBoot+Vue3的项目管理经营一体化:从商机、合同、任务与工时走到回款和利润
spring boot·项目管理·vue3·crm·合同管理·ruoyi office·项目经营
RuoyiOffice4 天前
SpringBoot+Vue3 节日主题换肤实战:一条参数换全站配色,节后自动还原
spring boot·vue3·spring boot 3·vben admin·ruoyi office·节日主题·换肤方案
RuoyiOffice6 天前
SpringBoot3+Vue3 流程抄送已读:打开详情消红点,待办与知会怎么分开
spring boot·vue3·flowable·spring boot 3·ruoyi office·流程抄送·已读回执
志尊宝6 天前
Vue3 零基础每日笔记(038):亲手封装 useDebounceFn 与 useThrottleFn——高频事件的流量阀
前端·javascript·vue·html·vue3
志尊宝7 天前
Vue3 零基础每日笔记(043):defineModel 与 defineExpose 的 TS 用法——3.4+ 新 API 进阶
前端·javascript·vue·html·vue3
RuoyiOffice8 天前
SpringBoot3+Vue3+Flowable 企业审批平台全链路:从表单设计、节点权限到移动审批怎么落地
spring boot·vue3·uniapp·springboot3·flowable·审批系统·ruoyi office
RuoyiOffice8 天前
SpringBoot3+Vue3 企业级管理平台架构:多租户、RBAC、数据权限、工作流与微服务一次讲透
spring boot·vue3·springboot3·rbac·多租户·数据权限·ruoyi office
Bs_MoneyMagnet8 天前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
ynchyong9 天前
TS 基础
typescript·ts
志尊宝9 天前
Vue3 零基础每日笔记(026):emit 子传父——defineEmits 与事件校验
前端·javascript·html·vue3