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中使用CSS3实现内容无缝滚动的示例代码
Nov 27 Vue.js
vue实现表格合并功能
Dec 01 Vue.js
vue监听滚动事件的方法
Dec 21 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
vue 给数组添加新对象并赋值
Apr 20 Vue.js
ant design vue的form表单取值方法
Jun 01 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面向对象编程快速入门
2006/12/14 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
JS如何生成动态列表
2020/09/22 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python迭代器实例简析
2014/09/25 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python实现电子书翻页小程序
2019/07/23 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
公司授权委托书范文
2014/08/02 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
python中mongodb包操作数据库
2022/04/19 Python