目录setup 具体怎么用:setup 的数据和方法如何使用?setup 参数setup 特性总结:总结:vue3中setup函数的作用与实现从 Vue2 升级 vue3,vue3
从 Vue2 升级 vue3,vue3 是可以兼容 vue2。所以 vue3 可以采用 vue2 的选项式 api,但是 vue2 不能使用 vue3 的组合式 API。
由于选项式 API 一个变量存在于多处,如果出现问题,就需要去涵盖多个函数。项目越大,排查的难度也就越大。
setup 用来写组合式 API,从生命周期的角度,相当于取代了 beforeCreate()
1.setup(){} 内部的属性和方法,必须用 return 暴露出来。
将属性挂载到实例上,否则没有办法使用。
语法糖:写在 script 开始标签中,内部的属性和方法,无需 return 暴露;
无法和选项式 API 混用。
2.setup 内部使用时,没有 this
3.钩子函数可以和 setup 并列存在
4.setup 不能调用生命周期相关函数,或者嵌套存在。
5.生命周期相关函数可以调用 setup 相关的属性和方法
6.可以使用 this
使用 setup 时,它将接收两个参数:props 和 context
props:
context:
上下文环境。其中包括了,属性,插槽,自定义事件三个部分。
setup 在代码中的使用
<script>
import { onMounted, toRefs } from "vue";
export default {
props: {
msg: "abc",
},
setup(props, context) {
let { msg } = toRefs(props);
let { attrs, slots, emit } = context;
console.log(props, context);
let num = 10;
return {
num,
};
// 和setup,嵌套的生命周期
// onMounted(() => {
// console.log("onMounted", num);
// });
},
// 和setup,并列的生命周期
mounted() {
console.log("挂载后");
console.log(this.$options);
},
data() {
return {};
},
methods: {},
};
</script>
以上就是 vue3 中 setup 的作用。
知识点扩展:
export function setupComponent(instance){
let { type,props,children} = instance.vnode
let {data,render,setup} = type
//初始化属性
initProps(instance,props);
instance.proxy = new Proxy(instance,instanceProxy);
if(data){
if(!isFunction(data)){
return console.warn('The data option must be a function.')
}
//给实例赋予data属性
instance.data = Reactive(data.call({}))
}
if(setup){
//setup的第二个参数,包含emit,attrs,slots等
const context = {}
const setupResult = setup(instance.props,context)
if(isFunction(setupResult)){
instance.render = setupResult
}else if(isObject(setupResult)){
instance.setupState = proxyRefs(setupResult)
}
}
if(!instance.render){
if(render){
instance.render = render
}else {
//模板编译
}
}
}
同时,instance的数据代理上做出对setupState的监听
const instanceProxy = {
get(target,key){
const { data,props,setupState} = target
if(data && hasOwn(data,key)){
return data[key]
}else if(setupState && hasOwn(setupState,key)){
return setupState[key]
}
else if(props && hasOwn(props,key)){
return props[key]
}
let getter = publicProperties[key]
if(getter){
return getter(target)
}
},
set(target,key,value,receiver){
// debugger
const {data,props,setupState} = target
if(data && hasOwn(data,key)){
data[key] = value
}else if( setupState && hasOwn(setupState,key)){
setupState[key] = value
}
else if(props && hasOwn(props,key)){
console.warn('props not update');
return false
}
return true
}
}
到此这篇关于Vue3 setup 的作用的文章就介绍到这了,更多相关Vue3 setup 的作用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Vue3 setup 的作用实例详解
本文链接: https://www.lsjlt.com/news/176227.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0