Vue 中组件关系可分为父子组件通信、兄弟组件通信、跨级组件通信。本节将介绍 “provide/inject”、”Vuex”的使用方式。
组件之间通信可以用下图表示:
组件通信示例
下面将介绍组件之间通信的实现方式
1. provide/inject
provide 和 inject 主要为高阶插件/组件库提供用例,并不推荐直接用于应用程序代码中。
允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div class="app" id="app"> <my-parent></my-parent> </div> <script src="./vue.js"></script> <script> Vue.component("my-children", { inject: { userName: { from: "name", default: "华仔" } }, template: "<h2>{{userName}}</h2>" })
Vue.component("my-parent", { template: "<div><my-children></my-children></div>" })
var vm = new Vue({ el: "#app", provide: { name: "刘德华" }, data: { total: 0, timer: null } }) </script> </body> </html>
|
Vuex
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
Vuex 原理图
详细资料参考官网:
https://vuex.vuejs.org/zh