本文
GitHub https://github.com/qq44924588 … 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。Vue 新手经常问的一个常见问题。可以将字符串、数组、数字和对象作为
props传递。但是你能把一个函数当作一个
props来传递吗?虽然可以将函数作为
props传递,但这种方式不好。相反,Vue 有一个专门为解决这问题而设计的功能,接下来,我们来看看。向组件传入函数
获取一个函数或方法并将其作为一个prop传递给子组件相对比较简单。实际上,它与传递任何其他变量方式完全相同:
<template>
<ChildComponent :function="myFunction" />
</template>export default {
methods: {
myFunction() {
// ...
}
}
};
正如前面所说,在Vue中永远都不要做这样的事情。
为什么?Vue有更好的东西。
大家都说简历没项目写,我就帮大家找了一个项目,还附赠【搭建教程】。
React vs Vue
如果使用过 React,就会习惯传递函数方式。
在React中,我们可以将一个函数从父组件传递给子组件,以便子组件能够向上与父组件通信。props 和 data 向下流动,函数调用向上流动。
然而,Vue有一种不同的机制来实现子到父通信方式,Vue 使用事件。
这与 DOM 的工作方式相同-与React相比,Vue 的方式与浏览器的一致性更高。 元素可以发出事件,并且可以监听这些事件。
因此,尽管在Vue中可以把函数作为prop传递,但它被认为是一种反模式。
使用事件
事件是我们与 Vue 中的父组件通信的方式。
这里有一个简短的例子来说明事件是如何工作的。
首先,我们将创建子组件,该子组件在创建时会发出一个事件:
// ChildComponent
export default {
created() {
this.$emit('created');
}
}在父组件中,我们监听该事件:
<template>
<ChildComponent @created="handleCreate" />
</template>export default {
methods: {
handleCreate() {
console.log('Child has been created.');
}
}
};
事件可以做的事情还有很多,而这仅仅是皮毛。强烈建议查看官方的Vue文档来了解更多关信息,绝对值得一读。
但是事件并不能完全解决我们所有的问题。










