那么下面我们将分别从函数的:
-
调用时机
-
this 指向
-
函数参数
-
返回值
这四个方面来解析 setup 函数
setup 函数在创建组件之前被调用,所以在 setup 被执行时,组件实例并没有被创建。
因此在 setup 函数中,我们将 没有办法 获取到 this 。
我们来看下面的这一段代码:
// 模板
// 配置对象
对于 setup 函数来说,它接收两个参数,分别为:
-
props
-
context
props
通过 prop 传递过来的所有数据,我们都可以在这里进行接收。并且获取到的数据将保持响应性。
我们看下面的代码:
父组件:
// 模板
// 配置对象
子组件:
const componentB = {
props: {
title: {
type: String,
required: true
}
},
setup(props) {
console.log(props); // Proxy {title: "父组件传递过来的 title"}
console.log(props.title); // "父组件传递过来的 title"
},
template: `
`
}
context
context 是一个 JavaScript 对象,这个对象暴露了三个组件的属性,我们可以通过 解构 的方式来分别获取这三个属性
// setup(props, context) {
setup(props, { attrs, slots, emit }) {
// Attribute (非响应式对象) 非 props 数据
console.log(attrs)
// 插槽 (非响应式对象)
console.log(slots);
// 触发事件 (方法) === this.$emit
console.log(emit);
}
attrs: 它是绑定到组件中的 非 props 数据,并且是非响应式的。
slots: 是组件的插槽,同样也不是 响应式的。
emit: 是一个方法,相当于 vue2 中的 this.$emit 方法。
然后我们通过下面的代码,来看一下这三个属性的实际使用:
// 父组件
<component-b title="父组件传递过来的 title" desc="父组件传递过来的普通属性" @update="onUpdate">
普通的匿名插槽
最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持! 开源分享:docs.qq.com/doc/DSmRnRG…