Vue3---(2)setup

​

概述

Vue 3 引入了 setup 语法,使 Composition API 成为核心特性之一。它相比 Options API 提供了更清晰的逻辑组织,提高了代码可维护性。组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。

基本语法

传统 setup

xml 复制代码
<script lang="ts">
  export default {
    name:'Test',
    setup(){
      // 数据(vue2 写在data中)
      let name = '张三'
      let age = 18
      // 方法(vue2 写在method中)
      function test(){
        name = 'zhang-san' //注意:此时这么修改name页面是不变化的
        console.log(name)
      }
      // 返回一个对象,对象中的内容,模板中可以直接使用
      return {name,age,test}
    }
  }
</script>

注意:setup返回值如果返回一个对象,那么对象的属性方法都可以在模板中使用,但是如果返回一个函数,则可以自定义渲染内容

javascript 复制代码
setup(){
 return ()=>'自定义文字显示'
}

<script setup>

不需要 return,变量和方法会自动暴露给 template

xml 复制代码
<script setup lang="ts">

  // 数据
  let name = '张三'
  let age = 18
  // 方法
  function test(){
  }
</script>

扩展:上述代码,还需要编写一个不写setup的script标签,去指定组件名字,比较麻烦,我们可以借助vite中的插件简化

  1. npm i vite-plugin-vue-setup-extend -D
  2. vite.config.ts中使用插件
  3. <script setup lang="ts" name="Person">
javascript 复制代码
import { defineConfig } from 'vite'
import VueSetupName from 'vite-plugin-vue-setup-extend'

export default defineConfig({
  plugins: [ VueSetupName () ]
})

执行时机

  • 在 beforeCreate 之前执行
  • 不能访问 this (因为 this 还未初始化,this输出为undefined)
  • 只能在 <script setup> 或 setup() 中使用

重点

  1. 可与vue2中的data,method,computed 等混用,而且在data,method...中也可以访问到setup中的属性和方法(因为setup先执行,数据方法都挂载到vm上,可以通过this访问到)
  2. setup不能访问vue2中的配置(data,method),原因在于setup先执行,此时this还是undefined

​

相关推荐
小郎君6589 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
yilaisai9 小时前
前端开发遇到的一些细节问题整理
vue.js
华玥作者10 小时前
Vue 3 + TypeScript + uni-app 组件库推荐:hy-app(华玥组件库)
vue.js·typescript·uni-app
阿琳a_10 小时前
b-map-viewer:面向 Vue 3 的地图可视化 SDK,从接入到展示再到交互分析
前端·javascript·vue.js·gis·数据可视化·地图
齐 飞11 小时前
VUE2常用语法总结
javascript·vue.js
北城笑笑11 小时前
Vue 106 ,上篇:前端桌面端应用实现方案( Electron 框架详细介绍,Vue + Electron )
前端·javascript·vue.js·python·electron
不磕了还不行12 小时前
用 Vue + Element UI 把元宝搜索的返回值做成“能点开检查的证据卡片”
前端·vue.js·ui
FRing031 天前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
徐小夕1 天前
深度剖析 30k star 的编码 Agent DeepSeek-Reasonix:长会话 Token 成本直降 80%
前端·vue.js·github
ruanno_top1 天前
1 万行表格只渲染 18 行:虚拟滚动让我放弃了三个功能
vue.js