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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
详细聊聊vue中组件的props属性
Nov 02 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 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 处理图片的类实现代码
2009/10/23 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
JavaScript类的写法
2016/09/17 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
Python中的一些陷阱与技巧小结
2015/07/10 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
python中实现词云图的示例
2020/12/19 Python
购买原创艺术品:Zatista
2019/11/09 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
老公给老婆的保证书
2014/04/28 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
活动总结格式
2014/08/30 职场文书
十八大标语口号
2014/10/09 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
关于观后感的作文
2015/06/18 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
Python绘制分类图的方法
2021/04/20 Python
pytorch 实现多个Dataloader同时训练
2021/05/29 Python