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

福建省住房和城乡建设厅的网站企业网站静态模板下载

福建省住房和城乡建设厅的网站,企业网站静态模板下载,兰州网新公司,ssl aws wordpress大白话Vue2和Vue3 组件通信,方式有哪些,都有什么区别? 咱们来聊聊 Vue2 和 Vue3 里组件通信的事儿,组件通信就像是不同部门之间传递消息,让各个组件能协同工作。下面分别说说它们的通信方式以及区别。 Vue2 组件通信方式 1. 父…

大白话Vue2和Vue3 组件通信,方式有哪些,都有什么区别?

咱们来聊聊 Vue2 和 Vue3 里组件通信的事儿,组件通信就像是不同部门之间传递消息,让各个组件能协同工作。下面分别说说它们的通信方式以及区别。

Vue2 组件通信方式

1. 父传子:props

这就像是领导给下属分配任务。父组件通过 props 把数据传递给子组件。父组件在使用子组件的标签上,用自定义属性来传递数据,子组件在 props 选项里声明要接收哪些数据。

例子

<!-- 父组件 -->
<template><ChildComponent :message="parentMessage" />
</template><script>
import ChildComponent from './ChildComponent.vue';
export default {components: {ChildComponent},data() {return {parentMessage: '这是来自父组件的消息'};}
};
</script><!-- 子组件 -->
<template><p>{{ message }}</p>
</template><script>
export default {props: ['message']
};
</script>
2. 子传父:$emit

这好比下属向领导汇报工作。子组件通过 $emit 触发一个自定义事件,父组件监听这个事件,当事件触发时,子组件可以把数据传递给父组件。

例子

<!-- 子组件 -->
<template><button @click="sendMessage">发送消息给父组件</button>
</template><script>
export default {methods: {sendMessage() {this.$emit('childEvent', '这是来自子组件的消息');}}
};
</script><!-- 父组件 -->
<template><ChildComponent @childEvent="handleChildEvent" />
</template><script>
import ChildComponent from './ChildComponent.vue';
export default {components: {ChildComponent},methods: {handleChildEvent(message) {console.log(message);}}
};
</script>
3. 非父子组件通信:事件总线(Event Bus)

这就像公司里有个公共的消息板,大家都可以在上面发消息和看消息。创建一个事件总线对象,组件可以通过它来触发事件和监听事件,从而实现非父子组件之间的通信。

例子

// event-bus.js
import Vue from 'vue';
export const eventBus = new Vue();// 发送消息的组件
import { eventBus } from './event-bus.js';
export default {methods: {sendMessage() {eventBus.$emit('messageEvent', '这是一条广播消息');}}
};// 接收消息的组件
import { eventBus } from './event-bus.js';
export default {created() {eventBus.$on('messageEvent', (message) => {console.log(message);});}
};
4. Vuex

这就像是公司有个大的资料室,所有组件都可以去那里拿资料和放资料。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

Vue3 组件通信方式

1. 父传子:props

和 Vue2 类似,还是领导给下属分配任务。只不过在 Vue3 的组合式 API 里,接收 props 的方式有变化。

例子

<!-- 父组件 -->
<template><ChildComponent :message="parentMessage" />
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
const parentMessage = ref('这是来自父组件的消息');
</script><!-- 子组件 -->
<template><p>{{ message }}</p>
</template><script setup>
import { defineProps } from 'vue';
const props = defineProps({message: String
});
</script>
2. 子传父:defineEmits

也是下属向领导汇报工作,不过在 Vue3 里用 defineEmits 来定义可以触发的事件。

例子

<!-- 子组件 -->
<template><button @click="sendMessage">发送消息给父组件</button>
</template><script setup>
import { defineEmits } from 'vue';
const emit = defineEmits(['childEvent']);
const sendMessage = () => {emit('childEvent', '这是来自子组件的消息');
};
</script><!-- 父组件 -->
<template><ChildComponent @childEvent="handleChildEvent" />
</template><script setup>
import ChildComponent from './ChildComponent.vue';
const handleChildEvent = (message) => {console.log(message);
};
</script>
3. 非父子组件通信:provide/inject

这就像公司里有个资源共享库,上级组件提供资源,下级组件可以注入使用,不管隔了多少层。

例子

<!-- 上级组件 -->
<template><ChildComponent />
</template><script setup>
import { provide, ref } from 'vue';
const sharedData = ref('这是共享的数据');
provide('sharedData', sharedData);
</script><!-- 下级组件 -->
<template><p>{{ sharedData }}</p>
</template><script setup>
import { inject } from 'vue';
const sharedData = inject('sharedData');
</script>
4. Vuex 或 Pinia

Vuex 还是那个大资料室,而 Pinia 是 Vue3 推荐的新状态管理库,功能和 Vuex 类似,但使用起来更简单。

区别

语法差异

Vue3 引入了组合式 API,像 definePropsdefineEmits 这些新的语法来处理 props 和自定义事件,和 Vue2 的选项式 API 写法不同。

非父子组件通信方式侧重点

Vue2 常用事件总线,但是当项目变大时,事件总线管理起来会比较混乱。Vue3 更推荐使用 provide/inject,它的层级关系更清晰,而且能更好地和组合式 API 配合使用。

状态管理库

Vue3 除了可以继续用 Vuex,还推荐使用 Pinia,Pinia 更符合现代 JavaScript 的特性,代码更简洁,使用起来也更方便。

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

相关文章:

  • 像网站分类一样的表格图怎么做长沙人才市场最新招聘
  • 织梦模仿网站视频一个微信小程序要多少钱
  • 佛山公司网站设计产品信息发布网站
  • 前端开发35岁以后干什么整站优化多少钱
  • 注册公司网站怎么收费做dnf辅助网站
  • 厦门专业做网站的公司网站建设 商业价值
  • 企业网站的优化做环保是跑还是网站卖
  • 什么服装网站做一件代发网站建设论文的前言
  • 网站入口设计规范广东省建设协会网站
  • 做电商网站有什么用湖南省住建厅官方网站建设干校
  • 永城网站设计公司软件源地址大全
  • 网站开发与设计的实训报告用什么网站开发巴西客户
  • 动易网站后台sharepoint网页制作教程
  • 外省公司做网站备案国外空间网站源码
  • 北京网络安全公司排名烟台seo快速排名
  • 做网站用多大的画布外包公司是怎么回事
  • 快彩网站开发厦门企业制作网站
  • 徐州网站建设方案推广小程序代理公司哪家好
  • 哔哩哔哩高能建站平面设计线
  • 网站建设的最终目标企业网络搭建
  • 网站开发需要哪些资料租房合同 模板
  • 公交公司网站建设的意义百度账号购买1元40个
  • 建设银行信用卡提额网站php获取wordpress
  • 做网站工作的怎么填职务交通网上服务平台
  • 国外免费空间网站申请怎么做网站专题
  • 站长统计app网站wordpress搜索判断
  • 免费做微网站中国建设网官方网站下载e路最新版官方
  • 个人网站备案 法律说明花瓣网免费素材图库官网
  • 杭州做肉松饼的网站有多少家淘宝店铺购买的服务在哪里
  • 磁器口网站建设以下哪个选项不属于网络营销的特点