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


Posted in Vue.js onDecember 02, 2020

一、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 内容代码量越来越大,但是始终围绕着大而不乱,代码结构清晰的路子前进。

到此这篇关于vue3.0中setup使用的文章就介绍到这了,更多相关vue3.0 setup使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
vue实现登录功能
Dec 31 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
vue中三级导航的菜单权限控制
Mar 31 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 #Vue.js
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 #Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 #Vue.js
vue $router和$route的区别详解
Dec 02 #Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 #Vue.js
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 #Vue.js
vue组件中节流函数的失效的原因和解决方法
Dec 02 #Vue.js
You might like
使用php自动备份数据库表的实现方法
2017/07/28 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
python原始套接字编程示例分享
2014/02/21 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
python和JavaScript哪个容易上手
2020/06/23 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
工作决心书
2014/03/11 职场文书
房屋出租委托书格式
2014/09/23 职场文书
医院护士工作检讨书
2014/10/26 职场文书
二年级数学教学反思
2016/02/16 职场文书