vue3中的setup函数
一、概念:
setup
是vue3中的一个新的配置项,值为一个函数,我们在组件中用到的数据、方法等等,都要配置在setup中。
二、详解:
setup函数的返回值有两种
1、返回一个渲染函数,可以自定义渲染内容(用得不多,了解即可)
import {h} from 'vue'
...
setup() {...return () => h('h1','学习')
}
2、返回一个对象,对象中的属性和方法在模板中可以直接使用
(1)在vue2的配置中可读取到vue3配置中的属性和方法
methods: {test1() {console.log(this.sex);console.log(this.sayHello);}
},
setup() {const sex = ref('女')function sayHello() {alert('你好啊')}return {sex,sayHello}
}
(2)在vue3的配置中不能读取vue2配置中的属性和方法
data() {return {sex:'男'}
},
methods: {sayHello() {alert('你好啊')}
},
setup() {function test2() {console.log(this.sex);console.log(this.sayHello);}return {test2}
}
(3)如果vue2和vue3的配置有冲突,则vue3的setup优先
data() {return {sex:'男'}
},
setup() {const sex = ref('女')return {sex}
}
注意点:
(1)vue2和vue3的配置尽量不要混用
(2)setup不能是一个async函数,因为返回值不再是return的对象, 而是promise, 模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)
三、两个注意点
1、setup执行的时机
在beforeCreate之前执行一次,this是undefined。
beforeCreate(){console.log('beforeCreate');
},
setup(){console.log('setup',this);
}
2、setup的参数
1、props:值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性。
在父组件中给子组件传递数据
<Demo msg="你好啊" name="tom" />
在子组件中接收
props:['msg','name'], // 需要声明一下接受到了,否则会报警告
setup(props){console.log(props)
}
并且接收到的数据被包装成一个代理对象,能够实现响应式。
2、context:上下文对象
1、attrs
: 值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性, 相当于 this.$attrs
。
父子组件通信过程中,父组件把数据传递过来,如果子组件没有用props进行接收,就会出现在attrs中,而vm中没有
如果用props接收了,则会出现在vm上而attrs中没有
props:['msg','name']
2、emit
: 分发自定义事件的函数, 相当于 this.$emit
。
在父组件中给子组件绑定一个事件
<Demo @hello="showHelloMsg">
在子组件中触发事件并且可以传值过去
emits:['hello'], // 要声明接收到了hello事件,否则会报警告
context.emit('hello',666)
3、slots
: 收到的插槽内容, 相当于 this.$slots
。
<Demo><template v-slot:qwe><span>你好</span></template>
</Demo>
vue3里面具名插槽用v-slot:
vue3中的setup函数相关推荐
- Vue3中的setup前加上async后页面不显示
问题: Vue3项目中,在setup函数前加上了async,使其变成异步函数,导致页面空白不显示? 描述: 最近在学习Vue3项目,使用了CompositionAPI的书写方式,其中有一个setup函 ...
- vue2.x的h函数(createElement)与vue3中的h函数
1. vue2.x的 h 函数(createElement) 使用方法及介绍:(参考官网提取) h函数第一个是标签名字 或者是组件名字,第二个参数是配置项,第三个参数是 innerText ,不会帮你 ...
- vue3组合式Composition API之setup函数的具体用法
vue3拉开序幕的setup 理解:Vue3.0中一个新的配置项,值为一个函数. setup是所有Composition API(组合API)" 表演的舞台 ". 组件中所用到的: ...
- Vue中setup函数
介绍 Vue3中使用setup函数取代methods和data 效果 代码 <!DOCTYPE html> <html lang="en"> <hea ...
- vue3.0js 非prop属性的值和setup函数的使用
非prop属性的值 一个非 prop 的 attribute 是指传向一个组件,但是该组件并没有相应 prop 定义的 attribute. 因为显式定义的 prop 适用于向一个子组件传入信息,然而 ...
- Vue3中Vuex的使用
Vuex是做什么的? Vue官方:状态管理工具 状态管理是什么? 需要在多个组件中共享的状态.且是响应式的.一个变,全都改变. 例如一些全局要用的的状态信息:用户登录状态.用户名称.地理位置信息.购物 ...
- Python setup()函数使用
python 有很方便的包管理工具 pip, 实际上任何第三方包都可以通过从对应的pip源一键下载安装,并将其所有的依赖(requirements)自动安装.安装第三方包的本质是可以通过一个方便的方法 ...
- vue3中setup()函数的使用二
vue3的使用 <template><div id="one"><img src="http://127.0.0.1:9000/upload ...
- vue3中setup()函数的使用一
<template><div id="one"><img src="http://127.0.0.1:9000/upload/001.png ...
最新文章
- 2018 年人工智能会怎么发展?这里有 8 个预测
- 内外兼备的企业blog
- 92django_url
- 【Python基础】Python 流程控制专题总结
- 我关注了389个公众号,这10个牛XXX的推荐给你!
- angular语言前端开发_web前端开发入门全套学习方法路径,兼职在家做网站也能月入上万...
- 关于配置tomcat多版本同eclipse的配置问题
- python时间处理方法_基于python时间处理方法(详解)
- 迅雷X 10.0.2.60 去广告版绿色精简版
- springboot集成微信app支付
- 容器-2018百战程序员JAVA全系列终结版第07阶:容器和数据结构
- EPUBBuilder编辑器新版
- Vue后台管理系统模板推荐
- 日历2021年日历表|2021年日历表打印版 Excel版
- 微分中值定理之柯西中值定理
- 准备考试?python也能帮你划重点,上考场
- iOS、mac开源项目及库(转载)
- 败家女提供QQ伤感日志_喜欢1个人听着忧伤的歌
- 怎样做出完美的高达模型
- uni--ReferenceError plus is not defined
热门文章
- zabbix 监控 db2_二十多款开源的服务器监控软件,你用过几款? – 阿汤博客
- 剑指Offer(较难)
- del , pop 和 remove
- CPU 体系结构书籍
- Linux环境搭建:CentOS7安装Oracle
- 中M2018春C入门和进阶练习集 7-6 重要的话说三遍(5 point(s))
- 异步三部曲之promise
- [附源码]Sprintboot计算机毕业设计飞越青少儿兴趣培训机构管理系统【源码+数据库+LW+部署】
- 显卡测试(具体步骤)
- 数学建模的影响因素分析方法