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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
vue postcss-px2rem 自适应布局
May 15 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将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
js date 格式化
2017/02/15 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
python实现2048小游戏
2015/03/30 Python
Python实现配置文件备份的方法
2015/07/30 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
Python 爬虫的原理
2020/07/30 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
大学生预备党员自我评价分享
2013/11/16 职场文书
房地产项目策划书
2014/02/05 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
大学生就业策划书范文
2014/04/04 职场文书
电影雨中的树观后感
2015/06/15 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书