vue父子传值,兄弟传值,子父传值详解

编辑: admin 分类: javascript 发布时间: 2021-11-17 来源:互联网
目录
  • 一、父组件向子组件传值
    • 1.父组件.vue
    • 2.子组件.vue
  • 二、兄弟组件间传值还可以通过中间件Bus
    • 1.A组件.js
    • 2.B组件.js
  • 三、子组件向父组件传值
    • 1.父组件.js
    • 2.子组件.js
  • 总结:

    一、父组件向子组件传值

    1.父组件.vue

    // 父组件中
    <template>
        <div>
            <Child ref="child" :title="value"/>
        </div>
    </template>    
    <script>
    export default {
        data() {
        	return {
        		value: 'hello world!'
        	}
        }
    }
    </script>
    

    2.子组件.vue

    // 父组件中
    <template>
        <div>
           <span>{{title}}</span>    
        </div>
    </template>    
    <script>
    export default {
      props: {
        title: {
          	type: String,
          	default: ''
        }
      }
    }
    </script>
    

    //title值为'hello world!

    二、兄弟组件间传值还可以通过中间件Bus

    $emit 传值

    $on 接收

    $off 删除传输事件

    1.A组件.js

    this.$bus.$emit("flag",true)
    

    2.B组件.js

    mounted() {
        this.$bus.$off('flag')
        th香港cn2服务器http://www.558idc.com/st.htmlis.$bus.$on('flag', data=> {
          this.flag= data
        })
      }
    

    三、子组件向父组件传值

    1.父组件.js

    <template>
        <div>
            <Child ref="child" @getTitle="getTitle"/>
        </div>
    </template>  
    <script>
    import Child from './components/Child'
    export default {
      components: {
      	Child 
      },
      data() {
        return {
        }
      },
      method:{
      	getTitle(data){
    		console.log(data)
    	}
      }
    }
    </script>
    

    打印结果为 hello xuliting

    2.子组件.js

    <template>
        <div>
           <span>{{title}}</span> 
        </div>
    </template>    
    <script>
    export default {
      data() {
        return {
        title: 'hello xuliting'
        }
      },
      mounted(){
        this.getFun()
      },
      method:{
        getFun(){
         this.$emit("getTiltle",this.title)
        }
      }
    }
    </script>
    

    总结:

    组件间也可以通过传递方法从而解决。例如父组件为A,子组件有B和C。

    父组件A调用子组件B的方法定义为aFun,把aFun传递给子组件C即可

    这是在父组件中的组件C进行方法传递

    <C :a-fun="aFun" />
    

    引用的则是在组件C,通过props

    props: {
        aFun: {
          type: Function,
          default: () => function() {}
        }
      }
    

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注hwidc的更多内容!