当前位置: 首页 > wzjs >正文

下载上海发布官方网站最新版在线 网

下载上海发布官方网站,最新版在线 网,台州网站搜索优化,郑州移动网站建设在 Vue3 中&#xff0c;后代组件向祖先组件通信可以通过以下几种方式实现&#xff1a; 方式一&#xff1a;Provide/Inject 函数传递&#xff08;推荐&#xff09; vue <!-- 祖先组件 --> <script setup> import { provide } from vueconst handleChildMsg (ms…

在 Vue3 中,后代组件向祖先组件通信可以通过以下几种方式实现:

方式一:Provide/Inject + 函数传递(推荐)

vue

<!-- 祖先组件 -->
<script setup>
import { provide } from 'vue'const handleChildMsg = (msg) => {console.log('收到后代消息:', msg)
}// 提供函数给后代
provide('sendToAncestor', handleChildMsg)
</script><!-- 后代组件 -->
<script setup>
import { inject } from 'vue'// 注入祖先提供的函数
const send = inject('sendToAncestor')const sendMessage = () => {send('来自后代的消息')
}
</script>

方式二:自定义事件总线

javascript

// eventBus.js
import mitt from 'mitt'
export const emitter = mitt()

vue

复制

<!-- 祖先组件 -->
<script setup>
import { onMounted, onUnmounted } from 'vue'
import { emitter } from './eventBus'const handleEvent = (msg) => {console.log('收到消息:', msg)
}onMounted(() => {emitter.on('child-message', handleEvent)
})onUnmounted(() => {emitter.off('child-message', handleEvent)
})
</script><!-- 后代组件 -->
<script setup>
import { emitter } from './eventBus'const emitToAncestor = () => {emitter.emit('child-message', '后代发送的消息')
}
</script>

方式三:Vuex/Pinia 状态管理

javascript

// store.js
import { defineStore } from 'pinia'export const useMainStore = defineStore('main', {state: () => ({messageFromDescendant: null}),actions: {setMessage(msg) {this.messageFromDescendant = msg}}
})

vue

<!-- 祖先组件 -->
<script setup>
import { useMainStore } from './store'
import { watch } from 'vue'const store = useMainStore()watch(() => store.messageFromDescendant,(newVal) => {console.log('收到消息:', newVal)}
)
</script><!-- 后代组件 -->
<script setup>
import { useMainStore } from './store'const store = useMainStore()const sendMessage = () => {store.setMessage('后代发送的消息')
}
</script>

方式四:模板引用(多层组件时)

vue

<!-- 祖先组件 -->
<script setup>
import { ref } from 'vue'const lastChildRef = ref(null)const handleChildMsg = (msg) => {console.log('收到消息:', msg)
}// 通过 expose 暴露方法
defineExpose({ handleChildMsg })
</script><template><ParentComponent><ChildComponent ref="lastChildRef" /></ParentComponent>
</template>

最佳实践选择:

  1. 简单通信:优先使用 provide/inject

  2. 跨组件通信:推荐使用事件总线

  3. 复杂状态管理:使用 Pinia/Vuex

  4. 直接组件引用:模板引用 + expose

注意:provide/inject 需要确保在组件树中存在提供者,事件总线要注意及时移除监听避免内存泄漏,状态管理适用于需要持久化或共享的数据。

http://www.dtcms.com/wzjs/533932.html

相关文章:

  • 设计网站公司 讲湖南岚鸿12306网站谁建设的
  • tp3企业网站开发百度云wordpress contact 伪静态
  • 新手做网站用什么软件专门做二手手机的网站吗
  • 网站开发流程 文档多语言网站模板
  • 开锁公司网站源码一件代发应该在哪个网站上做
  • 优化网站排名工具市场营销图片高清
  • 企业网站主页设计图网站建设网课
  • 网站服务器一年的费用梧州自助建站seo
  • 网站开发多少钱一个月自己怎么做一个企业官网
  • 阿里云服务器可以做网站宝塔建设网站域名进不去
  • wordpress网站前台密码湖南做网站 就问磐石网络专业
  • 淄博桓台网站建设公司编程培训机构推荐
  • 中国建设网站下载安装广元市城乡建设门户网站
  • 北京网站备案拍照地点推广普通话活动
  • 我的网站百度找不到了网站做跳转的意义
  • 漯河北京网站建设在自己网站做支付可以吗
  • 手机做网站用什么软件建设银行绑定手机号码网站
  • 青岛模版网站建设哪家好白银市建设局网站
  • 单位门户网站功能全国企业信用公示系统查询
  • 滁州网站开发czesou假网站网站怎么做
  • 深圳展览设计网站建设福州百度关键词优化
  • 别人做的网站怎样提升网站权重
  • aspx网站搭建教程网站建设简介联系方式
  • 快速建站公司用wordpress建站会不会显得水平差
  • 忻州网站seo河北城乡建设部网站首页
  • 购物网站需求分析电影宣传网站开发设计
  • 电商网站建设 问题与解决方案免费网站建设排名
  • wordpress网站邀请码静海商城网站建设
  • 石家庄网站建设排名阳江网上车管所
  • 做平台网站怎么赚钱wordpress教程安装教程视频