无法更改后代组件代码情况下,vue2代码this.$refs.detailchid.$children[0].$children[0].xxx变更成vue3后代码如何实现? | vue.js | vue.js 技术论坛-大发黄金版app下载

vue2升级到vue3中,原vue2中的通过this.$refs.detailchid.$children[0].$children[0].xxx去获取后代的组件的数据,$refs.detailchid是从依赖中进行全局注册的组件,其内部组件无法更改,无法通过provide 和 inject,也无法通过vuex等方式去获取数据, 现在有什么办法拿到后代组件的数据吗?后代组件仍然是vue2写法暴露出来的,没有使用setup,也没有使用一些vue3不兼容的语法

讨论数量: 5
<template>
  <div>
    <childcomponent ref="detailchild" />
  </div>
</template>
<script>
import { ref, onmounted } from 'vue';
import childcomponent from './childcomponent.vue';
export default {
  components: {
    childcomponent
  },
  setup() {
    const detailchild = ref(null);
    onmounted(() => {
      // 访问子组件的方法或数据
      if (detailchild.value) {
        // 假设子组件有一个方法叫 dosomething()
        detailchild.value.dosomething();
      }
    });
    return {
      detailchild
    };
  }
};
</script>

然后直接在子组件里定义dosomething输出子组件的对应数据就好了,而且本身不能使用 provide 和 inject就不合理,属于是组件定义上就有问题了。最节省的方法就直接定义个事件总线。

3个月前
(楼主) 3个月前
(作者) 3个月前
(楼主) 3个月前
(楼主) 3个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图