首页 > 其他分享 >VUE速通(10)Vue3核心语法(2)setup

VUE速通(10)Vue3核心语法(2)setup

时间:2024-05-18 18:18:28浏览次数:15  
标签:function 10 VUE tel 速通 setup let age name

1 setup 概述

setupVue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。

特点如下:

  • setup函数返回的对象中的内容,可直接在模板中使用。

  • setup中访问thisundefined

  • setup函数会在beforeCreate之前调用,它是“领先”所有钩子执行的。

Person.vue

<template>
  <div class="person">
    <h2>姓名:{{name}}</h2>
    <h2>年龄:{{age}}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">年龄+1</button>
    <button @click="showTel">点我查看联系方式</button>
  </div>
</template>

<script lang="ts">
  export default {
    name:'Person',
    setup(){
      // 数据,原来写在data中(注意:此时的name、age、tel数据都不是响应式数据)
      let name = '张三'
      let age = 18
      let tel = '13888888888'

      // 方法,原来写在methods中
      function changeName(){
        name = 'zhang-san' //注意:此时这么修改name页面是不变化的
        console.log(name)
      }
      function changeAge(){
        age += 1 //注意:此时这么修改age页面是不变化的
        console.log(age)
      }
      function showTel(){
        alert(tel)
      }

      // 返回一个对象,对象中的内容,模板中可以直接使用
      return {name,age,tel,changeName,changeAge,showTel}
    }
  }
</script>

 App.vue

 

setup 的返回值

  • 若返回一个对象:则对象中的:属性、方法等,在模板中均可以直接使用(重点关注)。

  • 若返回一个函数:则可以自定义渲染内容,代码如下:

 

setup 与 Options API 的关系

  • Vue2 的配置(datamethos......)中可以访问到 setup中的属性、方法。

  • 但在setup不能访问到Vue2的配置(datamethos......)。

  • 如果与Vue2冲突,则setup优先。

setup 语法糖

setup函数有一个语法糖,这个语法糖,可以让我们把setup独立出去,代码如下:

<template>
  <div class="person">
    <h2>姓名:{{name}}</h2>
    <h2>年龄:{{age}}</h2>
    <button @click="changName">修改名字</button>
    <button @click="changAge">年龄+1</button>
    <button @click="showTel">点我查看联系方式</button>
  </div>
</template>

<script lang="ts">
  export default {
    name:'Person',
  }
</script>

<!-- 下面的写法是setup语法糖 -->
<script setup lang="ts">
  console.log(this) //undefined
  
  // 数据(注意:此时的name、age、tel都不是响应式数据)
  let name = '张三'
  let age = 18
  let tel = '13888888888'

  // 方法
  function changName(){
    name = '李四'//注意:此时这么修改name页面是不变化的
  }
  function changAge(){
    console.log(age)
    age += 1 //注意:此时这么修改age页面是不变化的
  }
  function showTel(){
    alert(tel)
  }
</script>

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

  1. 第一步:npm i vite-plugin-vue-setup-extend -D

  2. 第二步:vite.config.ts

import { defineConfig } from 'vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'

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

 

标签:function,10,VUE,tel,速通,setup,let,age,name
From: https://www.cnblogs.com/qiu-hua/p/18199623

相关文章

  • LG10384
    一道相当不错的概率题。首先考虑种子中存在\(\verb!aa!\)的情况。显然,我们可以让每个不是\(\verb!aa!\)的种子都与这个\(\verb!aa!\)型的种子杂交,并检验杂交后的性状。若为\(\verb!a!\),则一定为\(\verb!Aa!\),否则可能是\(\verb!AA!\)或\(\verb!Aa!\)。不难想到多杂交......
  • LG10374
    提供一种树状数组的做法。对于每个操作,我们考虑求出它执行的次数。题目保证了对于操作\(2\)所执行的操作编号都比其自身编号小,换句话说,即每个操作的执行次数是由编号比它大的操作决定的。有了这个性质后,不难发现可以倒着扫一遍每个操作。对于当前操作\(i\),可以通过前面的处理......
  • LG10444
    首先有一个显然的结论,即若可以分成超过\(2\)个序列,则一定可以分成\(2\)个序列。如样例中的第二组数据,可以直接分成\(\{1,1,1,9\}\)和\(\{8,0\}\)。严谨证明留给读者思考。有了上面这个结论后,就转化为判断是否能够分成两个序列。注意到极差只与最大值与最小值有关,因此全局......
  • LG10270
    思路十分简单,但需要一定的转化,好题。记\(s_{i,j}\)表示第\(i\)行的第\(j\)个字符。考虑任意一点\((i,j)\),假设在此之前没有经过字母不同的路径,若\(s_{i,j+1}\)和\(s_{i+1,j}\)不同,则可以分别往这两个方向走,最长公共前缀也就固定下来了,长度为\(i+j-1\)。于是我们就可......
  • LG10369
    这是一道找规律题。不妨从小情况入手。当\(n=2\)时,显然令\(a=\{0,1\}\)是最优的,此时进行一次操作得到\(2\),为最大的答案。这是最基础的情况,也就是对于\(n\)更大的情况,答案最多也只能是\(2\)。接下来观察\(\operatorname{mex}\)的性质。\(\operatorname{mex}(0,1)=......
  • 代码随想录算法训练营第十一天 | 20.有效的括号 1047.删除字符串中的所有相邻 重复项
    20.有效的括号题目链接文章讲解视频讲解思路:遍历字符串,如果栈不为空,则进行匹配   如果匹配则出栈,否则入栈   如果栈为空,直接入栈   遍历结束后栈为空则说明全部匹配,否则没有全部匹配classSolution{public:boolisValid(strings){stack<cha......
  • 『手撕Vue-CLI』添加帮助和版本号
    前言经过上一篇『手撕Vue-CLI』编码规范检查之后,手撕Vue-CLI已经进阶到了代码规范检查这一步,已经将基本的工程搭建好了,然后代码规范约束也已经加入了,并且将nue-cli指令绑定到了全局当中,可以在任何地方使用了。正文接下来这篇文章呢,就要来实现一下大多数的命令行工具都会有......
  • HTML 10 - Comments
    HTMLCommentsareusedtocommentinHTMLcodes,sothedevelopercanunderstandthepurposeofthatcodesectionanditishelpfullfordebuggingalso.Ifwearefacingsomeissuebecouseofanyparticularelementwecahcheckitbycommentingoutthate......
  • 代码随想录算法训练营第第11天 | 20. 有效的括号 、1047. 删除字符串中的所有相邻重
    今天的题主要是关于栈的,比较简单,一次性过20.有效的括号讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。大家先自己思考一下有哪些不匹配的场景,在看视频我讲的都有哪些场景,落实到代码其实就容易很多了。题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.......
  • P1036 [NOIP2002 普及组] 选数
    传送锚点:https://www.luogu.com.cn/problem/P1036题目描述已知\(n\)个整数\(x_1,x_2,\cdots,x_n\),以及\(1\)个整数\(k\)(\(k<n\))。从\(n\)个整数中任选\(k\)个整数相加,可分别得到一系列的和。例如当\(n=4\),\(k=3\),\(4\)个整数分别为\(3,7,12,19\)时,可得全部的组合......