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 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
vue+echarts实现多条折线图
Mar 21 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 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
Zend公司全球首推PHP认证
2006/10/09 PHP
discuz安全提问算法
2007/06/06 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php实现mysql数据库分表分段备份
2015/06/18 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
高效使用Python字典的清单
2018/04/04 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python骚操作之动态定义函数
2019/03/26 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
美国宠物商店:Wag.com
2016/10/25 全球购物
校园活动策划书范文
2014/01/10 职场文书
上课玩手机检讨书
2014/02/08 职场文书
见习报告格式要求
2014/11/04 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS