vue3 composition(组合式)API 之 setup 入口函数,前端开发技术

38 阅读2分钟

那么下面我们将分别从函数的:

  • 调用时机

  • this 指向

  • 函数参数

  • 返回值

这四个方面来解析 setup 函数

调用时机与 this 指向


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: `

{{title}}

`

}

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…