`defineExpose` 是 Vue 3 中为于公开组件实例的方法,使得它可以被父组件访问。通过 `defineExpose`,惠可以选择性地将组件实例的一些属性或方法推出给父组件。 以下是 `defineExpose` 的基本使用方式。 1. 在组件的 `setup` 函数中,使用 `ref` 或 `reactive` 创建一个响应性的对象,作为存储要推出给父组件的属性或方法。 javascript&#x0a;import { defineComponent, ref, defineExpose } from &#x27;vue&#x27;;&#x0a;&#x0a;const MyComponent = defineComponent({&#x0a; setup() {&#x0a; const message = ref(&#x27;Hello&#x27;);&#x0a;&#x0a; // &#x4f7f;&#x7528; defineExpose &#x5c06; message &#x63a8;&#x51fa;&#x7ed9;&#x7236;&#x7ec4;&#x4ef6;&#x0a; defineExpose({&#x0a; message,&#x0a; });&#x0a;&#x0a; return {&#x0a; message,&#x0a; };&#x0a; },&#x0a;});&#x0a; 2. 在父组件中,可以通过 `$refs` 来访问到子组件的实例,并直接访问被推出的属性或方法。 html&#x0a;<template>&#x0a; <div>&#x0a; <my-component ref=&#x27;myComponentRef&#x27;></my-component>&#x0a; <button @click=&#x27;showMessage&#x27;>Show Message</button>&#x0a; </div>&#x0a;</template>&#x0a;&#x0a;<script>&#x0a;import { ref } from &#x27;vue&#x27;;&#x0a;&#x0a;export default {&#x0a; mounted() {&#x0a; // &#x8bbf;&#x95ee;&#x5b50;&#x7ec4;&#x4ef6;&#x7684; message &#x5c5e;&#x6027;&#x0a; console.log(this.$refs.myComponentRef.message);&#x0a; },&#x0a; methods: {&#x0a; showMessage() {&#x0a; // &#x8c03;&#x7528;&#x5b50;&#x7ec4;&#x4ef6;&#x7684;&#x65b9;&#x6cd5;&#x0a; this.$refs.myComponentRef.sayHello();&#x0a; },&#x0a; },&#x0a;};&#x0a;</script>&#x0a; 通过 `defineExpose`,我们可以将子组件的内部状态或方法推出给父组件,并在父组件中进行访问和调用。需要注意的是, `defineExpose` 只能在 `setup` 函数中调用,并且只能在 `setup` 函数的返回对象中返回响应性对象。

Vue.js 3 中的 defineExpose 使用指南 - 暴露组件实例属性和方法

原文地址: https://www.cveoy.top/t/topic/pV7d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录