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用mixin合并重复代码的实现
Nov 27 Vue.js
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
vue实现树状表格效果
Dec 29 Vue.js
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
vue keep-alive的简单总结
Jan 25 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
如何让vue长列表快速加载
Mar 29 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
vue如何清除浏览器历史栈
May 25 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
webpack优化的深入理解
2018/12/10 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
js实现简单扫雷
2020/11/27 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python List cmp()知识点总结
2019/02/18 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
keras slice layer 层实现方式
2020/06/11 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
python wsgiref源码解析
2021/02/06 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
机电一体化大学生求职信
2013/11/08 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
酒桌上的开场白
2015/06/01 职场文书
学术研讨会主持词
2015/07/04 职场文书
任命书格式模板
2015/09/22 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
redis lua限流算法实现示例
2022/07/15 Redis