首页IT科技vue3 ref reactive(vue3中使用ref语法糖)

vue3 ref reactive(vue3中使用ref语法糖)

时间2025-06-11 21:17:24分类IT科技浏览5914
导读:自从引入组合式 API 的概念以来,一个主要的未解决的问题就是 ref 和响应式对象到底用哪个。响应式对象存在解构丢失响应性的问题,而 ref 需要到处使用 .value 则感觉很繁琐,并且在没有类型系统的帮助时很容易漏掉 .value...

自从引入组合式 API 的概念以来                ,一个主要的未解决的问题就是 ref 和响应式对象到底用哪个                。响应式对象存在解构丢失响应性的问题                      ,而 ref 需要到处使用 .value 则感觉很繁琐        ,并且在没有类型系统的帮助时很容易漏掉 .value

以上是官方原话,大概就是新的语法糖,可以让我们更方便的使用ref,而不用每次都写.value,大概就是把这样的代码,简化成这样

<script setup lang="ts"> import { ref } from vue const count = ref(0) console.log(count.value) function increment() {count.value++ } </script> <template><button @click="increment">{{ count }}</button> </template>

简化成这样

<script setup lang="ts"> let count = $ref(0) console.log(count) function increment() {count++ } </script> <template><button @click="increment">{{ count }}</button> </template>

每一个会返回 ref 的响应式 API 都有一个相对应的                、以 $ 为前缀的宏函数                      。包括以下这些 API:

1.ref -> $ref

2.computed -> $computed

3.shallowRef -> $shallowRef

4.customRef -> $customRef

5.toRef -> $toRef

多余的不再赘述,大家可以自行查看官方文档,接下来我们来看看这个语法糖的具体使用,在项目中怎么配置

第一步(必须),在vite中启用语法糖开关

打开vite.config.ts,添加如下代码

vue({reactivityTransform: true, // 启用响应式语法糖$ref $computed $toRef}) 第二步(可选),配置tsconfig.json

在compilerOptions下添加vue/ref-macros, 不然会报错TS2304: Cannot find name $ref.虽然不影响使用,但是会影响开发体验

"compilerOptions":{..."types": ["vue/ref-macros"] } 第三步(可选),配置eslint

在eslintrc.cjs中加上global,不然会提示ESLint: $ref is not defined.(no-undef)

module.exports = {...globals: {$ref: "readonly",$computed: "readonly",$shallowRef: "readonly",$customRef: "readonly",$toRef: "readonly",} };

如果不嫌麻烦,又不想代码中总是有误报错误的行为,可以直接在vue代码中引入vue/ref-macros,这样就不用配置tsconfig.json和eslint了,也就是刚刚写的第二,第三步

<script setup lang="ts"> import { $ref } from "vue/macros"; let count = $ref(0) console.log(count) function increment() {count++ } </script> <template><button @click="increment">{{ count }}</button> </template>

最后

最近找到一个VUE的文档            ,它将VUE的各个知识点进行了总结                      ,整理成了《Vue 开发必须知道的36个技巧》        。内容比较详实            ,对各个知识点的讲解也十分到位            。

有需要的小伙伴        ,可以点击下方卡片领取                      ,无偿分享

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
c++核心技术(c++核心编程) 一个电脑怎么连两个蓝牙(一台主机怎么同时接入两个局域网)