vue3中使用ref语法糖的示例代码

 更新时间:2023年06月08日 10:35:06   作者:golyu  
Vue3提了一个Ref Sugar的RFC,即ref语法糖,目前还处理实验性的(Experimental)阶段,今天通过本文给大家介绍vue3中使用ref语法糖的相关知识,感兴趣的朋友跟随小编一起看看吧

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

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

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:

  • ref -> $ref
  • computed -> $computed
  • shallowRef -> $shallowRef
  • customRef -> $customRef
  • 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.jsoneslint了,也就是刚刚写的第二,第三步

<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>

vue3的ref用法

使用ref函数定义一个变量,ref扩号里是变量的初始值

import { ref } from 'vue'
let conter=ref(0)
let arr=ref(['我是字符串'])

template里的用法

<button @click="conter++">{{conter}}</button>
  <div v-for="item in arr">
  <p>{{item}}</p>
  </div>

js里的用法

function add(){
    conter.value++
    console.log(conter)
    arr.value.push('耗子尾汁')
}

获取虚拟dom (注意:1、变量名称要和html的一致。2、注意生命周期,要实例创建完成才有虚拟dom)

//html
<div ref="box"></div>
//script
<script setup>
import { ref , onMounted} from "vue";
let box=ref(null)
onMounted(()=>{
  console.log(box)
))
</script>

到此这篇关于vue3中使用ref语法糖的文章就介绍到这了,更多相关vue3 ref语法糖内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3+elementPlus项目支持设置默认附件方式

    vue3+elementPlus项目支持设置默认附件方式

    这篇文章主要介绍了vue3+elementPlus项目支持设置默认附件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue如何使用媒体查询实现响应式

    vue如何使用媒体查询实现响应式

    这篇文章主要介绍了vue如何使用媒体查询实现响应式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 解决vue3报错:找不到模块或其相应的类型声明

    解决vue3报错:找不到模块或其相应的类型声明

    这篇文章主要给大家介绍了关于如何解决vue3报错:找不到模块或其相应的类型声明的相关资料,这个错误提示是指在代码中引用了Vue模块,但是系统找不到该模块或者缺少相应的类型声明文件,需要的朋友可以参考下
    2023-07-07
  • vue3中路由写法与传参方式的超详细指南

    vue3中路由写法与传参方式的超详细指南

    Vue Router是Vue.js官方的路由管理器,它主要用于单页面应用程序中,帮助解决页面导航、组件复用等问题,下面我们就来看看vue3中路由写法与传参方式吧
    2024-11-11
  • 在vue中实现表单验证码与滑动验证功能的代码详解

    在vue中实现表单验证码与滑动验证功能的代码详解

    在Web应用程序中,表单验证码和滑动验证是常见的安全机制,用于防止恶意攻击和机器人攻击,本文将介绍如何使用Vue和vue-verify-code库来实现表单验证码和滑动验证功能,需要的朋友可以参考下
    2023-06-06
  • vue实现对highlight-current-row方式整行选中后修改默认背景颜色

    vue实现对highlight-current-row方式整行选中后修改默认背景颜色

    这篇文章主要介绍了vue实现对highlight-current-row方式整行选中后修改默认背景颜色方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue 项目软键盘回车触发搜索事件

    vue 项目软键盘回车触发搜索事件

    这篇文章主要介绍了vue 项目软键盘回车触发搜索事件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Hooks对于Vue作用意义详解

    Hooks对于Vue作用意义详解

    这篇文章主要为大家介绍了Hooks对于Vue作用意义详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • vue3父组件调用子组件的方法例子

    vue3父组件调用子组件的方法例子

    这篇文章主要给大家介绍了关于vue3父组件调用子组件的方法例子,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-07-07
  • 记录vue做微信自定义分享的一些问题

    记录vue做微信自定义分享的一些问题

    这篇文章主要介绍了记录vue做微信自定义分享的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论