在vue3.0中,setup函数是组合api的入口,用于定义数据和参数,语法为“setup(props,{slots,attrs,emit}){const name ='name'return{name}}”;该函数只能是同步的不能是异步。
本文操作环境:windows10系统、vue3版,dell g3电脑。
vue3.0中setup的用法是什么一、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 内容代码量越来越大,但是始终围绕着大而不乱,代码结构清晰的路子前进。
【相关推荐:《vue.js教程》】
以上就是vue3.0中setup的用法是什么的详细内容。