Vue父组件主动获取子组件的值和方法

在父组件使用子组件的代码中,为子组件加上ref="name(自己设置一个名称)"
然后在代码中:

this.$refs.name(你设置的名字).data	//获取子组件data中的数据
this.$refs.name(你设置的名字).method()	//获取子组件中method中的方法

!!!注意:如果父组件以循环的方式生成子组件,如:

<component ref="getParameters"
           		  v-for="(item, index) in layers"
                  :is="item.name"
                  :key="index"
              ></component>

this.$refs.name(你设置的名字)将会是一个VueComponent数组,这时候可以先获取数组的长度,再依次遍历:

for(let i=0; i<this.$refs.name(你设置的名字).length; i++){
	this.$refs[i].name(你设置的名字).method()
	console.log(this.$refs[i].name(你设置的名字).data)
}

例子:
父组件代码:

<template>
  <div>
  	<my_component ref="child_component"></my_component>
  </div>
</template>

<script>
import child_component from "./child_component"
export default {
  data: () => ({}),
  components:{
        'my_component':child_component
    },
  methods:{
  	get_data_from_child_component(){
  		this.$refs.child_component.whatever()	//父组件调用子组件的方法
  		console.log(this.$refs.child_component.msg)	//父组件调用子组件的值
  	}
  },
  mounted(){
  	this.get_data_from_child_component()
  },
};
</script>

子组件代码:

<template>
  <div></div>
</template>

<script>
export default {
  data: () => ({
  	msg:"这是子组件的值",
  }),
  methods:{
  	whatever(){
  		alert("这是子组件的方法")
  	}
  }
};
</script>

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中,组件获取组件可以通过使用`ref`和`$refs`来实现。首先,在组件中,我们需要给组件添加一个`ref`属性,例如`<son ref="myRefs"></son>`。然后,我们可以通过`this.$refs.myRefs`来获取组件的实例。接下来,我们就可以通过组件实例的属性或方法获取组件了。例如,如果组件有一个名为`age`的属性,我们可以通过`this.$refs.myRefs.age`来获取组件的`age`。\[2\] 需要注意的是,组件获取组件是通过`$refs`来实现的,而不是直接访问组件的属性。这是因为在Vue3中,组件的实例不再直接暴露在`this`上,而是通过`$refs`来引用。这样做是为了更好地封装组件,提高代码的可维护性和可读性。 总结起来,在Vue3中,组件获取组件的步骤如下: 1. 在组件中给组件添加一个`ref`属性。 2. 使用`this.$refs`来获取组件的实例。 3. 通过组件实例的属性或方法获取组件。 希望对你有所帮助! #### 引用[.reference_title] - *1* [Vue3 组件调用组件方法/获取修改($refs 在setup()、<script setup> 中使用)](https://blog.csdn.net/pacholy/article/details/128660755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue3.0 组件调用组件方法获取组件](https://blog.csdn.net/weixin_44132285/article/details/126517620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [10.Vue3.x组件主动获取组件的数据和执行组件方法组件主动获取组件的数据和执行组件方法](https://blog.csdn.net/zwswood/article/details/116779549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值