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

厦门电商网站百度官方网站登录

厦门电商网站,百度官方网站登录,今日新闻江西,优设网素材下载🌈Vue3 跨组件通信完整方案对比总结 👉 收藏 点赞 关注,一文搞定组件通信! 一、前言 在 Vue3 中,组件间通信有多种技术方案。每种方案适用于不同场景,没有绝对优劣,合理选型最重要。 二、通信…

🌈Vue3 跨组件通信完整方案对比总结

👉 收藏 + 点赞 + 关注,一文搞定组件通信!


一、前言

在 Vue3 中,组件间通信有多种技术方案。每种方案适用于不同场景,没有绝对优劣,合理选型最重要。


二、通信方案全景图

通信方式适用场景优点缺点
props / emit父子组件通信简单、官方推荐、类型安全只能父子使用,嵌套层级深时繁琐
provide / inject跨层级祖孙组件跨多层组件方便松散耦合,不适合频繁数据变更
ref / expose父组件操作子组件方法直观易用只能父对子使用
mitt(事件总线)任意组件跨层简单快速、轻量需手动解绑,易混乱
状态管理(Pinia、Vuex)全局状态管理规范、集中、易维护引入成本较高
URL Params路由级通信深度路由传参仅适用于路由通信

三、每个方案详细讲解

1️⃣ props / emit(父子通信)

适用

  • 父传子(props)
  • 子传父(emit)

示例

<!-- 父组件 -->
<Child :msg="parentMsg" @updateMsg="handleUpdate" />
<!-- 子组件 -->
<template>{{ msg }}</template>
<script setup>
const props = defineProps<{ msg: string }>();
const emit = defineEmits<['updateMsg']>;
emit('updateMsg', '新值');
</script>

优缺点

  • ✅ 官方标准
  • ✅ TS 友好
  • ❌ 只能父子通信

2️⃣ provide / inject(祖孙通信)

适用

  • 深层嵌套组件
  • 全局注入轻量数据

示例

<!-- 祖先组件 -->
provide('username', '张三');
<!-- 任意子孙组件 -->
const username = inject('username');

优缺点

  • ✅ 解耦
  • ❌ 数据响应性弱,需手动 ref
provide('username', ref('张三'));
const username = inject('username') as Ref<string>;

3️⃣ ref / expose(父操作子)

适用

  • 父组件调用子组件方法、属性

示例

<!-- 子组件 -->
<script setup>
function openModal() { /* ... */ }
defineExpose({ openModal });
</script>
<!-- 父组件 -->
<Child ref="childRef" />
childRef.value?.openModal();

优缺点

  • ✅ 操作方便
  • ❌ 只能父对子,适用面小

4️⃣ mitt(事件总线)

适用

  • 跨任意组件
  • 轻量快速

封装示例

import mitt from 'mitt';
export const eventBus = mitt();

使用示例

eventBus.emit('login', user);
eventBus.on('login', (user) => { ... });

优缺点

  • ✅ 极轻量
  • ✅ 不限层级
  • ❌ 手动解绑,长期使用需规范管理

5️⃣ 状态管理(推荐 Pinia)

适用

  • 全局状态
  • 复杂业务逻辑

示例

// store/user.ts
import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {state: () => ({ username: '张三' }),
});
const store = useUserStore();
store.username = '李四';

优缺点

  • ✅ 全局统一管理
  • ✅ TS 完美支持
  • ❌ 初学者学习成本稍高

6️⃣ URL Params(路由通信)

适用

  • 页面跳转传参

示例

router.push({ name: 'detail', query: { id: 123 } });
const route = useRoute();
console.log(route.query.id);

优缺点

  • ✅ 路由通信标准方案
  • ❌ 仅适合路由传参

四、快速选型建议表

场景推荐方案
简单父子组件传值props / emit
深层嵌套祖孙组件传值provide / inject
父调用子组件内部方法ref / expose
任意组件快速通信mitt
项目级全局状态管理Pinia
路由跳转时传参URL Params

五、最终建议

  • 👉 小项目props / emit + provide/inject + mitt
  • 👉 中大型项目强烈建议引入 Pinia 状态管理
http://www.dtcms.com/wzjs/47960.html

相关文章:

  • 淄赌博做网站创量广告投放平台
  • 宁波专业做网站的公司有哪些aso关键词排名优化是什么
  • 浙江省水利建设行业协会网站app推广拉新平台
  • 湖南的商城网站建设关键词全网搜索工具
  • 东莞seo建站优化收费百度推广多少钱
  • 做的网站百度上可以搜到吗seo技术经理
  • 移动网站开发pdf自主建站
  • 温州做网站公司有哪些曼联目前积分榜
  • 南昌市,做网站的公司网络推广渠道
  • 房产网站建设方案论文网址查询工具
  • wordpress完整替换网址seo型网站
  • 唐山做网站的电话体验营销策略
  • 个人求职简历模板免费下载河北seo网络优化培训
  • 贵州企业网站建设案例信息流推广
  • 电影网站logo设计北京seo公司排名
  • 网站建设公司好学做网站需要学什么
  • 山西住房和建设厅网站竞价出价怎么出
  • 网站建设 猴王网络今日发生的重大新闻
  • 思淘网站建设seo排名优化
  • wordpress 进销存seo查询工具有哪些
  • 郑州企业网站优化哪家便宜一元手游平台app
  • 在家做的客服正规平台企业网站的优化建议
  • 网站平台建设公司百度权重查询工具
  • 微信开放平台可以做网站么域名注册流程
  • 食品 骏域网站建设专家搜索引擎营销怎么做
  • 网站建设程序结构站长之家工具高清
  • 无锡网站建设.com信息流广告怎么投放
  • 适合大学生做的网站网站alexa排名
  • 网站数据库建表百度投放广告平台
  • 企业内部系统网站制作百度推广优化师