vue父子组件相互调用

vue父组件调用子组件

方法一:利用ref 

//父组件
<template>
  <div class="home">
    <HelloWorld ref="mychild"></HelloWorld>
    <div @click="clickParent">click me</div>
  </div>
</template>
<script>
  import HelloWorld from '@/components/HelloWorld.vue'
  export default {
    name: 'home',
    components: {
      HelloWorld
    },
    methods: {
      clickParent() {
        this.$refs.mychild.parentHandleclick("嘿嘿嘿");
      }
    }
  }
</script>

//子组件
<template>
  <div class="hello">
    <h1>我是HelloWorld组件</h1>
  </div>
</template>
<script>
  export default {
    name: 'HelloWorld',
    created() {

    },
    methods: {
      parentHandleclick(e) {
        console.log(e)
      }
    }
  }
</script>

子组件调用父组件

第一种方法是直接在子组件中通过this.$parent.event来调用父组件的方法

第二种方法是在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了。

第三种是父组件把方法传入子组件中,在子组件里直接调用这个方法

Vue.js中,父子组件间的通信是非常常见的需求。当我们在父组件需要操作子组件的状态或者触发子组件的行为时,可以采用以下几种方式: 1. **props** (属性): 父组件通过`props`向下传递数据给子组件,子组件通过`this.$emit('自定义事件名', 数据)`触发回调函数供父组件处理。 ```javascript // 父组件 <template> <child-component :message="parentMessage" @update="handleUpdate"></child-component> </template> <script> export default { props: { parentMessage: { type: String, default: '' } }, methods: { handleUpdate(message) { this.parentMessage = message; } } }; </script> ``` 2. **methods** 和 `ref`: 父组件可以通过`ref`获取到子组件的引用,并直接调用其提供的方法。 ```javascript // 父组件 <template> <div ref="childRef"> ... </div> </template> <script> export default { methods: { callChildMethod() { this.$refs.childRef.someChildMethod(); } } }; </script> ``` 3. **自定义事件 bus**: 当父子组件之间有复杂的数据流动需求时,可以使用Vuex管理状态,或者创建一个全局的事件总线来进行通信。 4. **计算属性(Computed properties)**: 父组件可以通过计算属性间接修改子组件的状态,子组件的变化会自动更新父组件的计算结果。 记住,在调用子组件方法时,需要确保已经实例化了该子组件并且对它有足够的访问权限。此外,避免滥用 `$parent` 和 `$children` 变量,因为它们可能会导致不易维护的代码结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值