摘要:两个同级组件之间传递数据,通过传递数据。准备工作,我新建了个文件,分别是实例根组件,包含和组件的父组件,的同级组件父组件向子组件传递数据,通过传递数据。
Vue 的单文件组件在使用 Vue 时非常常用,所以我们也会经常遇到组件之间需要传递数据的时候,大致分为三种情况:
父组件向子组件传递数据,通过 props 传递数据。
子组件向父组件传递数据,通过 events 传递数据。
两个同级组件之间传递数据,通过 event bus 传递数据。
文档中也已经详细的说明了各种情况下的解决方法,但是现在我在还没有阅读多少文档的情况下,没有找到有单文件组件方面的具体书写方式,智商和理解能力有限的情况下,自己尝试了一下,最后发现其实是一样的。所以这篇文章其实是废话,但是还是想记录一下,不枉自己花了一个多小时。
准备工作,我新建了 6 个文件,分别是:
index.html
main.js 「Vue 实例」
app.vue 「根组件,包含 page 和 footer 组件」
page.vue 「msg 的父组件,footer 的 同级组件」
msg.vue
footer.vue
父组件向子组件传递数据,通过 props 传递数据。这里我以 page 向 msg 传递数据为例:
page.vue 中
page
msg.vue 中
{{ love }}
这样以后就会发现,实现了把父组件 page 中的数据传递到子组件 msg 中了。
另外,需要强调一下的是,不要在子组件中修改 props 的值,当然修改是有效的,非常不推荐,而且 Vue 也会有警告提示。正确的做法是传递给 data 中的属性或者计算属性。props 中的值是可以通过 this.love 访问到的。
特别注意 props 值是引用类型时的情况,不可以进行简单的赋值,会影响到父组件,正确的做法是进行深拷贝。
父组件 page.vue 中
page
子组件 msg.vue 中
{{ msg }}
点击后就会发现 console 出了 "success"。
同级元素之间传递数据,通过 event bus 来传递。需要引入一个 Vue 实例 作为中央总线。
page 组件中
page
footer 组件中
嗯,最后发现打印出来了 "666",这样就实现了。
最后总结一下:
父组件向子组件传递数据,通过 props 传递数据。具体做法只需要在父组件中绑定,在子组件中声明。
//父组件//子组件 export default { ... props: ["love"] }
子组件向父组件传递数据,通过 events 传递数据。具体做法时在父组件中监听,在子组件中触发。
//子组件 export default { ... methods: { pass () { this.$emit("passData", "hi") } } }
两个同级组件之间传递数据,通过 event bus 传递数据。
import { bus } from "./bus.js"//两个组件都要引入 //触发事件 export default { ... methods: { passData () { this.$emit("communicate", "hello") } } } //监听事件 export default { ... mounted: { this.$on("communicate", (data) => { //... }) } }
嗯,废话较多,毫无干货。作为刚进入前端行业,刚开始写博客的新人,缺点和不足麻烦大家指出。转载请注明出处。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/82119.html
摘要:路由模块的本质就是建立起和页面之间的映射关系。这时候我们可以直接利用传值了使用来匹配路由,然后通过来传递参数跳转对应路由配置于是我们可以获取参数六配置子路由二级路由实际生活中的应用界面,通常由多层嵌套的组件组合而成。 一、前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这些问...
摘要:路由模块的本质就是建立起和页面之间的映射关系。这时候我们可以直接利用传值了使用来匹配路由,然后通过来传递参数跳转对应路由配置于是我们可以获取参数六配置子路由二级路由实际生活中的应用界面,通常由多层嵌套的组件组合而成。 一、前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这些问...
摘要:路由模块的本质就是建立起和页面之间的映射关系。这时候我们可以直接利用传值了使用来匹配路由,然后通过来传递参数跳转对应路由配置于是我们可以获取参数六配置子路由二级路由实际生活中的应用界面,通常由多层嵌套的组件组合而成。 一、前言 要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这些问...
阅读 3683·2023-04-26 02:07
阅读 3624·2021-10-27 14:14
阅读 2803·2021-10-14 09:49
阅读 1543·2019-08-30 15:43
阅读 2574·2019-08-29 18:33
阅读 2326·2019-08-29 17:01
阅读 873·2019-08-29 15:11
阅读 553·2019-08-29 11:06