vue父子组件相互调用方法和获取data中的数据

1、父组件获取子组件data数据和子组件方法。
给子组件标签加ref,然后通过this.$refs.childData.方法。

<template>
  <!-- 父组件 -->
  <div>
    <Header ref="childData"></Header>
  </div>
</template>

<script>
import Header from "../../components/header"

export default {
  components:{
    Header
  },
  data() {
    return{

    }
  },
  mounted(){
    this.initData()
    this.initFun()
  },  
  methods:{
    // 获取子组件中data的数据
    initData(){
      console.log(this.$refs["childData"].childrenData)
    },

    // 获取子组件中的方法
    initFun(){
      this.$refs.childData.handeCon()
    }
  }
}
</script>
<template>
  <!-- 子组件 -->
  <div class="header">
    <ul>
      <li v-for="(item,index) in list" :key="index">{{item}}</li>
    </ul>
  </div>
</template>

<script>
export default{
  name:"Header",
  data() {
    return {
       list:["首页","沸点","课程","直播","活动"],
       childrenData: "我是子组件data中的数据"
    };
  },
  mounted(){
    this.handeCon()
  },
  methods:{
    handeCon(){
      console.log("我是子组件中的方法")
    }
  }
}
</script>

<style scoped>
	li{list-style: none;}
	
	ul{
	  display: flex;
	  justify-content: space-between;
	  width: 1200px;
	  margin: 0 auto;
	}

</style>

2、子组件获取父组件data数据和子组件方法。
子组件通过this.$parent.方法获取

<template>
  <!-- 父组件 -->
  <div class="box" style="margin:20px">
    <child ref="childData"></child>
  </div>
</template>
<script>
import Header from "../../components/header"
export default {
  components: {
    child,
  },
  data() {
    return {
      str: {
        name: "猪小凡",
        age: 18,
        title: "父组件数据",
      },
    };
  },
  created() {
  },
  methods: {
    handelAA() {
      alert("我是父组件方法");
    },
  },
};
</script>

<template>
  <!-- 子组件 -->
  <div class="box">
    <button @click="handelFuZuJian">点击</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
    };
  },
  created() {
    this.getListDara();
  },
  methods: {
    getListDara() {
      console.log(this.$parent.str, "str");
    },
    handelFuZuJian() {
      this.$parent.handelAA();
    },
  },
};
</script>

原文 vue父子组件相互调用方法和获取data中的数据_vue获取子组件的data_qq_42695727的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js父子组件通信是非常常见的需求,可以通过以下几种方式进行调用: 1. **props(属性传递)**:父组件向子组件传递数据,这是最直接的方式。父组件通过`props`将数据绑定到子组件的`data`属性上,子组件通过`this.$props`来访问这些数据。 ```javascript // 父组件 <template> <child-component :data="parentData"></child-component> </template> <script> export default { data() { return { parentData: '这是父组件数据' } } } </script> // 子组件 <template> <div>{{ $props.data }}</div> </template> ``` 2. **事件(emit与on)**:子组件通过`$emit`触发自定义事件,然后在父组件监听这个事件并处理。 ```javascript // 子组件 <template> <button @click="doSomething">点击我</button> </template> <script> export default { methods: { doSomething() { this.$emit('parentEvent', { message: '来自子组件的事件' }); } } } </script> // 父组件 <template> <child-component @parentEvent="handleParentEvent"></child-component> </template> <script> export default { methods: { handleParentEvent(data) { console.log('父组件接收到:', data); } } } </script> ``` 3. **自定义指令(v-bind、v-on)**:可以使用自定义指令实现更复杂的父子组件通信,如动态绑定或事件监听。 4. **$parent/$refs**:特殊变量可以直接访问父组件的实例,但这种方式不推荐,因为它们不是响应式的,而且可能引发深层组件的引用问题。 5. **Vuex**:如果数据需要在多个组件之间共享和管理,可以使用状态管理库Vuex。 相关问题-- 1. Vue的prop默认是什么修饰符? 2. 在Vue,什么情况下会使用自定义事件? 3. 使用$parent/$refs通信有什么缺点?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值