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

网站建设培训 通州网站的规划与建设

网站建设培训 通州,网站的规划与建设,视觉差网站制作,天津北京网站建设公司前言 在Vue3开发中&#xff0c;组件通信是构建复杂应用的核心技能。本文将全面讲解Vue3支持的8种组件传值方式&#xff0c;助你轻松应对各种场景&#xff01; 一、Props父传子 适用场景&#xff1a;父组件向直接子组件传递数据 <!-- 父组件 --> <template><C…

前言

在Vue3开发中,组件通信是构建复杂应用的核心技能。本文将全面讲解Vue3支持的8种组件传值方式,助你轻松应对各种场景!


一、Props父传子

适用场景:父组件向直接子组件传递数据

<!-- 父组件 -->
<template><Child :title="parentTitle" />
</template><script setup>
import Child from './Child.vue'
const parentTitle = "来自父组件的消息"
</script><!-- 子组件Child.vue -->
<template><h2>{{ title }}</h2>
</template><script setup>
// Options API写法
// export default {
//   props: ['title']
// }// Composition API写法
const props = defineProps({title: {type: String,default: '默认标题'}
})
</script>

二、自定义事件子传父

适用场景:子组件向父组件传递数据

<!-- 子组件 -->
<template><button @click="sendMessage">发送消息</button>
</template><script setup>
const emit = defineEmits(['message-sent'])const sendMessage = () => {emit('message-sent', '子组件的数据')
}
</script><!-- 父组件 -->
<template><Child @message-sent="handleMessage" />
</template><script setup>
const handleMessage = (msg) => {console.log(msg) // 输出:子组件的数据
}
</script>

三、v-model双向绑定

Vue3新特性:支持多个v-model绑定

<!-- 父组件 -->
<template><Child v-model:title="pageTitle" v-model:content="pageContent" />
</template><!-- 子组件 -->
<template><input :value="title"@input="$emit('update:title', $event.target.value)"><textarea:value="content"@input="$emit('update:content', $event.target.value)">
</template><script setup>
defineProps(['title', 'content'])
defineEmits(['update:title', 'update:content'])
</script>

四、Ref获取组件实例

适用场景:父组件直接调用子组件方法

<!-- 父组件 -->
<template><Child ref="childRef" /><button @click="callChildMethod">调用子组件</button>
</template><script setup>
import { ref } from 'vue'
const childRef = ref(null)const callChildMethod = () => {childRef.value.childMethod()
}
</script><!-- 子组件 -->
<script setup>
const childMethod = () => {console.log('子组件方法被调用')
}// 需暴露方法给父组件
defineExpose({childMethod
})
</script>

五、Provide/Inject依赖注入

适用场景:跨层级组件通信

<!-- 祖先组件 -->
<script setup>
import { provide } from 'vue'provide('globalColor', 'red')
</script><!-- 任意后代组件 -->
<script setup>
import { inject } from 'vue'const color = inject('globalColor', 'blue') // 默认值blue
</script>

六、事件总线(Event Bus)

Vue3实现方式:需借助第三方库(推荐mitt)

// eventBus.js
import mitt from 'mitt'
export const emitter = mitt()// 组件A发送事件
emitter.emit('custom-event', data)// 组件B监听事件
emitter.on('custom-event', (data) => {// 处理数据
})

七、Pinia状态管理

推荐方案:Vue官方新一代状态管理工具

// store/counter.js
export const useCounterStore = defineStore('counter', {state: () => ({ count: 0 }),actions: {increment() {this.count++}}
})// 组件中使用
import { useCounterStore } from './store/counter'
const counter = useCounterStore()
console.log(counter.count) // 0
counter.increment()

八、LocalStorage/SessionStorage

适用场景:持久化数据存储

// 存储
localStorage.setItem('user', JSON.stringify(userData))// 读取
const user = JSON.parse(localStorage.getItem('user'))

方法对比

方式适用场景数据流向复杂度
Props父子组件父→子★☆☆
自定义事件父子组件子→父★☆☆
v-model父子双向绑定双向★★☆
Provide/Inject跨层级组件祖先→后代★★☆
Pinia复杂应用/多组件共享状态任意方向★★★
事件总线任意组件(简单场景)任意方向★★☆

最佳实践建议

  1. 优先使用Props/Events处理直接父子通信
  2. 深层嵌套组件使用Provide/Inject
  3. 复杂应用建议采用Pinia状态管理
  4. 慎用事件总线,避免难以维护的事件链
  5. 表单场景优先考虑v-model双向绑定

扩展思考:如何选择通信方式?

  • 根据组件层级关系
  • 考虑数据流动频率
  • 评估应用复杂度
  • 关注数据持久化需求

希望这篇指南能帮助你在Vue3开发中游刃有余地处理组件通信!如果有任何疑问,欢迎在评论区留言讨论!


下一篇预告:《Vue3 Composition API深度解析》欢迎关注!



文章转载自:

http://ZJ1JyOD5.mmxnb.cn
http://6CqGV7kX.mmxnb.cn
http://SfPM6tsG.mmxnb.cn
http://C475LIoc.mmxnb.cn
http://eILLzxfN.mmxnb.cn
http://kffcv1XJ.mmxnb.cn
http://iZ9IIWIO.mmxnb.cn
http://WxFQ9Fwn.mmxnb.cn
http://QdrjH91O.mmxnb.cn
http://TLGI7DEd.mmxnb.cn
http://cUVHr3UX.mmxnb.cn
http://c1t86JTM.mmxnb.cn
http://Mqi5abuZ.mmxnb.cn
http://9YoLWFaS.mmxnb.cn
http://oohULbiB.mmxnb.cn
http://wCvNGA3G.mmxnb.cn
http://7DbexGrh.mmxnb.cn
http://Epr5ziDo.mmxnb.cn
http://21Q3vkQp.mmxnb.cn
http://5HNDkgbY.mmxnb.cn
http://UPKG6bCe.mmxnb.cn
http://RAAYDOPW.mmxnb.cn
http://LxJqqCHd.mmxnb.cn
http://EyFCwnfF.mmxnb.cn
http://YBaXZCOP.mmxnb.cn
http://oc2Cxkwh.mmxnb.cn
http://FIK4YzBC.mmxnb.cn
http://XEZEMksx.mmxnb.cn
http://kSPbggMz.mmxnb.cn
http://jWfRo0yf.mmxnb.cn
http://www.dtcms.com/wzjs/683322.html

相关文章:

  • 做外贸兼职的网站小程序网站建设的公司
  • 上海做网站hlanggroup做的视频发到哪个网站好
  • 网站弹窗设计广西优化网站
  • 商城网站设计策划企业创新平台建设
  • 做原型网站秦皇岛咔咔科技有限公司
  • 需要做网站建设的行业有哪些单页建站系统
  • 做暧昧视频网站怎样找家做网站的公司
  • 做资源的教育类网站或公司沈阳京科医院男科
  • 湖南岳阳网站建设公司黄页顺企网如何做产品网站
  • 湖北建设网站首页wordpress yasaer
  • 帝国cms如何做网站学习软件开发的网站
  • 什么网站有做册子版附近广告公司喷绘刻字
  • 免费域名模板建站分割页面
  • 网站建设实验目的南昌企业建站程序
  • 网站设计的图片邯郸网站建设咨询安联网络
  • 巴彦淖尔网站制作中国职业培训在线官方网站
  • 深圳都信建设监理有限公司网站濮阳 网站建设
  • 响应式网站开发费用如何用python开发网页
  • 做淘客网站注意事项如何做旅游休闲网站
  • 苏州高新区建设局网站外贸网站如何做
  • 网站上的图用美图秀秀做可以吗织梦教育网站模板
  • 花生壳怎么发布自己做的网站2020十大热点事件
  • 网站开发 简单备案网站建设承诺书
  • 网站建设价格报价wordpress采集淘宝
  • 阿里云可以放几个网站建网站的流程和费用
  • 如今流行的网站建设软件界面设计方案
  • 网站前台代码综合性门户网站是什么意思
  • 泰州网站设计培训网站设计建设定制
  • 个人可以备案企业网站吗深圳做网站哪家公司最好
  • 儿童网站模板免费下载网站的积分系统怎么做的