组件使用defineExpose暴露属性,父组件无法获取子组件属性?

子组件

<template>
  <div>我是子组件</div>
</template>
<script  lang="ts" >
import { defineComponent, ref, defineExpose } from 'vue';
export default defineComponent({
  setup(props, context) {
    const message = ref<string>("我是子组件message");
    defineExpose({
      message: message
    })
    return {}
  },
});

</script>

父组件

<template>
  <test ref="testx"></test>
</template>
<script lang="ts">
import { defineComponent, onMounted, ref } from 'vue';
import test from './components/test.vue'
let testx = ref(null)

export default defineComponent({
  components: {
    test
  },
  setup(props, context) {
    onMounted(() => {
      console.log(testx.value); // 打印是null
    })
  },
});
</script>

试了一下,用setup 语法糖是可以的。那如果不用语法糖,该怎么暴露属性呢?

阅读 6.2k
1 个回答

defineExpose 就setup 下的语法糖
不用 setup 用expose: ['publicMethod'],就可以

<template>
  <div>我是子组件</div>
</template>
<script  lang="ts" >
import { defineComponent, ref } from 'vue';
export default defineComponent({
  expose: ['message'],
  setup(props, context) {
    const message = ref<string>("我是子组件message");

    return {message}
  },
});

</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题