vue3.0中setup使用(两种用法)

news/2024/7/10 1:42:02 标签: vue, js

一、setup函数的特性以及作用

  可以确定的是 Vue3.0 是兼容 Vue2.x 版本的 也就是说我们再日常工作中 可以在 Vue3 中使用 Vue2.x 的相关语法 但是当你真正开始使用 Vue3 写项目时 你会发现他比 Vue2.x 方便的多

  Vue3 的一大特性函数 ---- setup

  1、setup函数是处于 生命周期函数 beforeCreate 和 Created 两个钩子函数之间的函数 也就说在 setup函数中是无法 使用 data 和 methods 中的数据和方法的

  2、setup函数是 Composition API(组合API)的入口

  3、在setup函数中定义的变量和方法最后都是需要 return 出去的 不然无法再模板中使用

二、setup函数的注意点

  1、由于在执行 setup函数的时候,还没有执行 Created 生命周期方法,所以在 setup 函数中,无法使用 data 和 methods 的变量和方法

  2、由于我们不能在 setup函数中使用 data 和 methods,所以 Vue 为了避免我们错误的使用,直接将 setup函数中的this修改成了 undefined

  3、setup函数只能是同步的不能是异步的

用法1:结合ref使用

<template>

 <div id="app">

  {{name}}

  <p>{{age}}</p>

  <button @click="plusOne()">+</button>

 </div>

</template>

  

<script>

import {ref} from 'vue'

export default {

 name:'app',

 data(){

  return {

   name:'xiaosan'

  }

 },

 setup(){

  const name =ref('小四')

  const age=ref(18)

  function plusOne(){

   age.value++ //想改变值或获取值 必须.value

  }

  return { //必须返回 模板中才能使用

   name,age,plusOne

  }

 }

}

</script>

用法2:代码分割

Options API 和 Composition API 

Options API 约定:

我们需要在 props 里面设置接收参数

我们需要在 data 里面设置变量

我们需要在 computed 里面设置计算属性

我们需要在 watch 里面设置监听属性

我们需要在 methods 里面设置事件方法

你会发现 Options APi 都约定了我们该在哪个位置做什么事,这反倒在一定程度上也强制我们进行了代码分割。

现在用 Composition API,不再这么约定了,于是乎,代码组织非常灵活,我们的控制代码写在 setup 里面即可。

setup函数提供了两个参数 props和context,重要的是在setup函数里没有了this,在 vue3.0 中,访问他们变成以下形式: this.xxx=》context.xxx

我们没有了 this 上下文,没有了 Options API 的强制代码分离。Composition API 给了我们更加广阔的天地,那么我们更加需要慎重自约起来。

对于复杂的逻辑代码,我们要更加重视起 Composition API 的初心,不要吝啬使用 Composition API 来分离代码,用来切割成各种模块导出。

我们期望是这样的:

importuseAfrom'./a';
importuseBfrom'./b';
importuseCfrom'./c';

exportdefault{
    setup (props) {
        let{ a, methodsA } = useA();
        let{ b, methodsB } = useA();
        let{ c, methodsC } = useC();
        return{
            a,
            methodsA,
            b,
            methodsB,
            c,
            methodsC
        }
    }
}

就算 setup 内容代码量越来越大,但是始终围绕着大而不乱,代码结构清晰的路子前进。


http://www.niftyadmin.cn/n/1466610.html

相关文章

Do not access Object.prototype method ‘hasOwnProperty‘ from target object

今天用对象的属性hasOwnProperty&#xff0c;去判断对象是否包含该值&#xff0c;我这里主要判断对象是否为空&#xff0c;出现了以上错误&#xff0c;之前也遇到过类似的错误&#xff0c;如parseInt&#xff08;‘24.5’&#xff09;&#xff0c;必须要给转换的进制类型&#…

post方式返回文件流实现前端blob下载,responseType: ‘blob‘无效

responseType: blob 一般情况下&#xff0c;下载分为好几种&#xff0c;但是常用的是get下载文件流直接下载 post下载文件流是很少见的&#xff0c;但是鉴于参数太多&#xff0c;不能走get 只能走post下载&#xff0c;post下载分为两种&#xff1a; 1.form表单下载 2.post返回…

Oracle开发专题之:%TYPE 和 %ROWTYPE

1. 使用%TYPE 在许多情况下&#xff0c;PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下&#xff0c;变量应该拥有与表列相同的类型。例如&#xff0c;students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量&#xff1a; DECLARE v_FirstNa…

org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

异常信息如下&#xff1a;2010-2-4 11:53:55 org.apache.catalina.startup.HostConfig checkResources信息: Reloading context [/ssh]2010-2-4 11:53:55 org.apache.catalina.core.ApplicationContext log信息: Closing Spring root WebApplicationContext 2010-2-4 11:53:55 …

Excel.Application使用手册(API)

Excel.Application使用手册 定制模块行为 (1) Option Explicit 强制对模块内所有变量进行声明 Option Private Module 标记模块为私有&#xff0c;仅对同一工程中其它模块有用&#xff0c;在宏对话框中不显示 Option Compare Text 字符串不区分大小写 Option Base 1 指定数组的…

如何安装sap HANA studio并连接到学习机(91ABAP SAP HANA学习机)--开放的SAP HANA学习机

如何安装sap HANA studio并连接到学习机(91ABAP SAP HANA学习机)&#xff1a;此学习机由克米亚团队与91ABAP合作&#xff0c;免费对外开放。 SAP HANA Studio 下载链接&#xff1a; 1.克米亚SAP HANA Studio 下载链接&#xff1a; http://www.kemiya.net/thread-24528-1-1.html…

SAP HANA HDB序列的使用方法及技巧(SAP HANA HDB SEQUENCE )

SAP HANA HDB序列的使用方法及技巧(SAP HANA HDB SEQUENCE): 创建序列&#xff1a; 语法&#xff1a;CREATE SEQUENCE <sequence_name> [<common_sequence_parameter_list>] [RESET BY <subquery>] <sequence_name> :: <identifier> <common…

SAP-HANA快速创建序列

--创建序列CREATE SEQUENCE Z_SERVICE_LOG_SEQ INCREMENT BY 1 MAXVALUE 99999999 MINVALUE 1 CYCLE;--获取下一个序列SELECT Z_SERVICE_LOG_SEQ.NEXTVAL FROM DUMMY;--删除序列DROP SEQUENCE Z_SERVICE_LOG_SEQ;