vue3父子组件通信(子传父)

博客主要提及了 Vue 中的子组件和父组件。在前端开发里,Vue 框架下的组件化开发是重要特性,子组件和父组件的合理运用有助于构建高效的前端页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、子组件

 2、父组件

 

 

### Vue3 父子组件通信方法 #### 组件向父组件传递数据 在 Vue3 中,组件可以通过 `emit` 方法向父组件发送事件并附带数据。具体实现如下: 1. **组件定义要传递的数据** 在组件的 `data()` 函数中定义需要传递给父组件的数据变量 `transmsg`[^1]。 ```javascript export default { data() { return { transmsg: &#39;我是组件传递的值&#39; }; }, methods: { sendMessageToParent() { this.$emit(&#39;custom-event&#39;, this.transmsg); // 发送自定义事件 custom-event 并携带数据 } } }; ``` 2. **父组件监听组件发出的事件** 父组件通过绑定组件上的自定义事件来接收来自组件的消息。 ```html <template> <ChildComponent @custom-event="handleCustomEvent" /> </template> <script> import ChildComponent from &#39;./ChildComponent.vue&#39;; export default { components: { ChildComponent }, methods: { handleCustomEvent(message) { console.log(&#39;接收到组件消息:&#39;, message); } } }; </script> ``` --- #### 父组件向组件传递数据 父组件可以利用 Props 将数据传递到组件中。Props 是一种单向下行的数据流机制。 1. **父组件传递数据至组件** 父组件通过属性的方式将数据传入组件。 ```html <template> <ChildComponent :parentMessage="messageFromParent" /> </template> <script> import ChildComponent from &#39;./ChildComponent.vue&#39;; export default { components: { ChildComponent }, data() { return { messageFromParent: &#39;这是来自父组件的消息&#39; }; } }; </script> ``` 2. **组件接收 Prop 数据** 组件声明接受的 Prop 属性,并将其用于模板或其他逻辑中。 ```javascript export default { props: [&#39;parentMessage&#39;], // 声明 prop mounted() { console.log(&#39;接收到父组件消息:&#39;, this.parentMessage); } }; ``` --- #### 父组件访问组件中的 Data 数据 如果父组件需要直接获取组件内部的状态(不推荐频繁使用),可以借助 `$refs` 实现[^2]。 1. **组件暴露特定的方法或状态** 使用 `defineExpose` 显式暴露组件的内容(Vue3 Composition API 特性)。 ```javascript <script setup> import { ref } from &#39;vue&#39;; const childData = ref(&#39;我是组件的数据&#39;); defineExpose({ childData }); </script> ``` 2. **父组件通过 $refs 访问组件数据** 父组件可以在挂载完成后通过 `$refs` 获取组件实例及其公开内容。 ```html <template> <ChildComponent ref="childRef" /> <button @click="accessChildData">访问组件数据</button> </template> <script> import ChildComponent from &#39;./ChildComponent.vue&#39;; export default { components: { ChildComponent }, methods: { accessChildData() { console.log(this.$refs.childRef.childData); // 输出组件暴露的数据 } } }; </script> ``` --- ### 总结 - 组件向父组件传递数据主要依赖于 `$emit` 和自定义事件。 - 父组件向组件传递数据则通过 Props 完成。 - 如果确实需要跨边界访问组件内部状态,则可采用 `$refs` 或显式暴露接口的方式完成交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值