vue组件的通信

文章目录

  • 组件通信
    • 父传子
      • 父传子:通过prop来进行通信
    • 子传父
      • 先在父组件用@注册方法 , 在子组件触发使用 emit 函数
    • 组件间通信-平行组件
      • 使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线
    • 其他组件通信
      • 父组件 provide来提供变量,然后再子组件中通过inject来注入变量

组件通信

父传子

父传子:通过prop来进行通信

        // 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>

效果

vue组件的通信_第1张图片

子传父

先在父组件用@注册方法 , 在子组件触发使用 emit 函数


    

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

vue组件的通信_第2张图片

组件间通信-平行组件

使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线

               const bus = new Vue();
               // 1. 中央事件总线 bus
              
               // 2. $on 绑定事件
               bus.$on('add',(n)=>{
                   this.count+=n;
               })
               
               // 3.触发绑定的函数 // $emit 触发事件
                  bus.$emit('add',1);

具体代码


    

点击加入购物车 下面数字自动加一

vue组件的通信_第3张图片

其他组件通信

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

父组件 provide来提供变量,然后再子组件中通过inject来注入变量


    

你可能感兴趣的:(vue.js,javascript,前端)