Vue3中自动引入ref、reactive等语法

在 Vue3 项目中我们可以发现定义变量跟使用vue里面的方法,都要 import { ref } from 'vue';很不方便

为了不用手动引入,方便开发,我们可以下载插件 

npm install unplugin-auto-import

yarn add unplugin-auto-import

pnpm install unplugin-auto-import

 vite.config.js中配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { relative } from 'path'

// 引入
import AutoImport from 'unplugin-auto-import/vite'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({ // 使用
      imports: ['vue'],
      dts: 'src/auto-import.d.ts',
      // 如有用到eslint记得加上写段,没有用到可以忽略
      eslintrc: {
        enabled: true,
      },
    }),
  ],
  resolve: {
    alias: {
      '@': relative(__dirname, 'src'),
    },
  },
  server: {
    host: '0.0.0.0', //显示当前局域网
    open: false, //是否自动启动浏览器
  },
})

 保存之后重新启动项目,这个时候在src下面就会自动生成一个 auto-imports.d.ts文件,全局状态下生成一个文件夹.eslintrc-auto-import.json

.eslintrc.cjs中配置

module.exports = {
  extends: [
    './.eslintrc-auto-import.json',
  ],
}

最后一步啦,试试把import { reactive, ref } from 'vue' 去掉看看效果吧

### Vue3 中 `ref` 和 `reactive` 在接口赋值时的区别 当处理来自接口的数据并将其绑定到组件状态时,选择使用 `ref` 或者 `reactive` 取决于数据结构以及开发者的偏好。 对于基本类型(如字符串、数字),推荐使用 `ref` 来创建响应式的变量。这是因为 `ref` 提供了一种简单的方式来包裹原始值,并允许开发者通过 `.value` 访问或修改这些值[^1]。 ```javascript import { ref } from 'vue'; const fetchData = async () => { const response = await fetch('/api/data'); const result = await response.json(); const numberValue = ref(result.number); // 使用 ref 处理基础数值 }; ``` 然而,在面对复杂的数据结构比如对象或者数组时,则更适合采用 `reactive` 。这不仅因为 `reactive` 更高效地管理嵌套属性的变化通知机制,还因为它不需要额外的 `.value` 属性来读取/写入数据[^2]。 ```javascript import { reactive } from 'vue'; const fetchData = async () => { const response = await fetch('/api/data'); const result = await response.json(); const complexData = reactive(result.complexObject); // 使用 reactive 对象 }; ``` 值得注意的是,如果向 `ref()` 传入一个已经存在的引用类型(例如对象或数组),内部会自动调用 `reactive()` 将其变为深层响应式实体[^4]。因此在这种场景下两者功能上趋于一致,只是语法糖不同而已。 ### 接口赋值的最佳实践建议 为了保持一致性并且简化代码逻辑,通常可以根据预期接收的数据形式决定: - 如果知道返回的结果是一个单一的基础类型值(像整数、布尔等),则可以考虑使用 `ref`; - 当预计获取的对象含有多个字段或者是列表集合等形式时,优先选用 `reactive`; 这样做既能够充分利用各自的优势特性,又能在团队协作过程中减少不必要的混淆。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值