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新手入门指导教程
Nov 18 Vue.js
vue实现表格合并功能
Dec 01 Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
vue watch监控对象的简单方法示例
Jan 07 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
php和javascript之间变量的传递实现代码
2012/12/19 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
简单的通用表达式求10乘阶示例
2014/03/03 Python
python实现多线程抓取知乎用户
2016/12/12 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
python单例模式实例解析
2018/08/28 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python实现滑雪游戏
2020/02/22 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
秋季运动会通讯稿
2014/01/24 职场文书
仓库主管岗位职责
2014/03/02 职场文书
学校党支部承诺书
2015/04/30 职场文书
学校捐款活动总结
2015/05/09 职场文书
送给客户微信问候语!
2019/07/04 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript