vue3 composition(组合式)API 之 setup 入口函数,【福利】

35 阅读3分钟
结束

一次完整的面试流程就是这样啦,小编综合了腾讯的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析,分享给小伙伴们,有没有需要的小伙伴们都去领取!

开源分享:docs.qq.com/doc/DSmRnRG… // 2. 通过实例对象的 mount 方法进行挂载

app.mount('#app')

函数参数


对于 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">

普通的匿名插槽

// 子组件

const componentB = {

props: {

title: {

type: String,

required: true

}

},

setup(props, { attrs, slots, emit }) {

// Attribute (非响应式对象)

console.log(attrs) // Proxy {desc: "父组件传递过来的普通属性", __vInternal: 1, onUpdate: ƒ}

// 插槽 (非响应式对象)

console.log(slots.default()); // [{__v_isVNode: true, __v_skip: true, type: "h1", …}]

// 触发事件 (方法)

// console.log(emit);

emit('update', '子组件更新的数据') // 发出一个事件,在父组件中监听这个事件,并进行打印

},

template: `

{{title}}

`

}

返回值


我们可以在 setup 函数中返回一个对象,这样我们就可以在模板中直接访问该对象中的属性和方法

setup(props, { attrs, slots, emit }) {

return {

content: '这是 setup 中返回的数据',

onLog: () => {

console.log('调用 onLog 方法')

}

}

这里分享一份由字节前端面试官整理的「2021大厂前端面试手册」,内容囊括Html、CSS、Javascript、Vue、HTTP、浏览器面试题、数据结构与算法。全部整理在下方文档中,共计111道

HTML

  • HTML5有哪些新特性?

  • Doctype作⽤? 严格模式与混杂模式如何区分?它们有何意义?

  • 如何实现浏览器内多个标签页之间的通信?

  • ⾏内元素有哪些?块级元素有哪些? 空(void)元素有那些?⾏内元 素和块级元素有什么区别?

  • 简述⼀下src与href的区别?

  • cookies,sessionStorage,localStorage 的区别?

  • HTML5 的离线储存的使用和原理?

  • 怎样处理 移动端 1px 被 渲染成 2px 问题?

  • iframe 的优缺点?

  • Canvas 和 SVG 图形的区别是什么?

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 问:0.1 + 0.2 === 0.3 嘛?为什么?

  • JS 数据类型

  • 写代码:实现函数能够深度克隆基本类型

  • 事件流

  • 事件是如何实现的?

  • new 一个函数发生了什么

  • 什么是作用域?

  • JS 隐式转换,显示转换

  • 了解 this 嘛,bind,call,apply 具体指什么

  • 手写 bind、apply、call

  • setTimeout(fn, 0)多久才执行,Event Loop

  • 手写题:Promise 原理

  • 说一下原型链和原型链的继承吧

  • 数组能够调用的函数有那些?

  • PWA使用过吗?serviceWorker的使用原理是啥?

  • ES6 之前使用 prototype 实现继承

  • 箭头函数和普通函数有啥区别?箭头函数能当构造函数吗?

  • 事件循环机制 (Event Loop)