// 1.在子组件中声明props接收在父组件挂载的属性
// 2.可以在子组件的template中任意使用
// 3.在父组件绑定自定义的属性
<body>
<div id="app">
<!-- 3.使用子组件 -->
<App></App>
</div>
<script src="./vue.js"></script>
<script>
// 全局组件
// 父传子:通过prop来进行通信
// 1.在子组件中声明props接收在父组件挂载的属性
// 2.可以在子组件的template中任意使用
// 3.在父组件绑定自定义的属性
Vue.component('Child',{
template:`
我是一个子组件
{{childData}}
`,
props:['childData']
})
const App = {
data() {
return {
msg: '我是父组件传进来的值'
}
},
template: `
`,
computed: {
}
}
new Vue({
el: '#app',
data: {
},
components: {
// 2.挂载子组件
App
}
})
</script>
</body>
效果

效果 输入框输入数据 顶部数据同步变化

const bus = new Vue();
// 1. 中央事件总线 bus
// 2. $on 绑定事件
bus.$on('add',(n)=>{
this.count+=n;
})
// 3.触发绑定的函数 // $emit 触发事件
bus.$emit('add',1);
具体代码
点击加入购物车 下面数字自动加一

如果层级很深的情况,比如有嵌套情况,可使用provide和inject