80.00-05-Vue组件间通信6种方式-jiye注解版1
Vue 组件间通信 6 种方式 在 Vue 框架中,组件之间的通信是非常重要的,因为它可以让不同的组件之间共享数据和功能。下面,我们将讨论 Vue 组件间通信的 6 种方式。 1. Props Props 是 Vue 中最基本的组件间通信方式。它允许父组件将数据传递给子组件。父组件可以使用 v-bind 指令将数据绑定到子组件的 props 上,子组件可以使用 props 对象来接收数据。 例如,在上面的代码中,我们定义了一个 App 组件,它包含一个 Users 组件。我们使用 v-bind 指令将 users 数据绑定到 Users 组件的 props 上。 ```html <!-- App.vue --> <template> <div id="app"> <users v-bind:users="users"></users> </div> </template> <script> export default { name: 'App', data() { return { users: ["Henry", "Bucky", "Emily"] } }, components: { "users": Users } } </script> <!-- Users.vue --> <template> <div class="hello"> <ul> <li v-for="user in users">{{user}}</li> </ul> </div> </template> <script> export default { name: 'HelloWorld', props: { users: { type: Array, required: true } } } </script> ``` 2. $emit / $on $emit 和 $on 是 Vue 提供的组件间通信方式。$emit 可以触发事件,而 $on 可以监听事件。 例如,在上面的代码中,我们定义了一个 AppHeader 组件,它包含一个点击事件。当点击事件触发时,它会使用 $emit 触发 titleChanged 事件。然后,我们在 App 组件中使用 v-on 指令监听 titleChanged 事件。 ```html <!-- AppHeader.vue --> <template> <header> <h1 @click="changeTitle">{{title}}</h1> </header> </template> <script> export default { name: 'app-header', data() { return { title: "Vue.js Demo" } }, methods: { changeTitle() { this.$emit("titleChanged", "�������"); } } } </script> <!-- App.vue --> <template> <div id="app"> <app-header v-on:titleChanged="updateTitle" ></app-header> <h2>{{title}}</h2> </div> </template> <script> import Header from "./components/Header" export default { name: 'App', data() { return { title: "Vue.js Demo" } }, methods: { updateTitle(event) { this.title = event; } }, components: { "app-header": Header } } </script> ``` 3. Vuex Vuex 是 Vue 的状态管理工具。它可以帮助我们管理应用程序的状态,并使得组件之间的通信更加方便。 例如,我们可以使用 Vuex 来管理应用程序的用户列表状态。 ```javascript // store.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { users: ["Henry", "Bucky", "Emily"] }, mutations: { addUser(state, user) { state.users.push(user); } } }) ``` 然后,我们可以在组件中使用 Vuex 来访问和修改状态。 ```html <!-- App.vue --> <template> <div id="app"> <users :users="users"></users> </div> </template> <script> import { mapState } from 'vuex' export default { name: 'App', computed: { ...mapState({ users: state => state.users }) } } </script> ``` 4. $parent / $children $parent 和 $children 是 Vue 提供的组件间通信方式。$parent 可以访问父组件,而 $children 可以访问子组件。 例如,我们可以使用 $parent 来访问父组件的数据。 ```html <!-- Child.vue --> <template> <div> {{ $parent.msg }} </div> </template> <script> export default { name: 'Child' } </script> <!-- Parent.vue --> <template> <div> <child></child> </div> </template> <script> export default { name: 'Parent', data() { return { msg: "Hello, World!" } } } </script> ``` 5. $attrs / $listeners $attrs 和 $listeners 是 Vue 提供的组件间通信方式。$attrs 可以访问父组件传递的属性,而 $listeners 可以访问父组件传递的事件监听器。 例如,我们可以使用 $attrs 来访问父组件传递的属性。 ```html <!-- Child.vue --> <template> <div> {{ $attrs.title }} </div> </template> <script> export default { name: 'Child' } </script> <!-- Parent.vue --> <template> <div> <child title="Hello, World!"></child> </div> </template> <script> export default { name: 'Parent' } </script> ``` 6. Provide/Inject Provide/Inject 是 Vue 提供的组件间通信方式。它可以让父组件提供数据,而子组件可以 inject 来访问这些数据。 例如,我们可以使用 Provide/Inject 来共享数据。 ```html <!-- GrandParent.vue --> <template> <div> <parent></parent> </div> </template> <script> export default { name: 'GrandParent', provide: { msg: "Hello, World!" } } </script> <!-- Parent.vue --> <template> <div> <child></child> </div> </template> <script> export default { name: 'Parent' } </script> <!-- Child.vue --> <template> <div> {{ msg }} </div> </template> <script> export default { name: 'Child', inject: ['msg'] } </script> ``` Vue 提供了多种组件间通信方式,我们可以根据实际情况选择合适的方式来实现组件之间的通信。
剩余13页未读,继续阅读
- 粉丝: 40
- 资源: 305
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于STM32为电子香味项目,通过蓝牙模块传输数据,嵌入式硬件平台,RFID使用的是RC522.整个项目包括软硬件以及android程序详细文档+全部资料+高分项目+源码.zip
- 基于发布-订阅模型的多线程消息框架,用于嵌入式平台,纯C实现,性能和灵活性极高详细文档+全部资料+高分项目+源码.zip
- 基于嵌入式Linux的一套可视对讲设备代码,比较底层,写的比较好,里面的lib库是一些图像处理库详细文档+全部资料+高分项目+源码.zip
- php 实现各种排序和查找算法源代码.zip
- 基于嵌入式qt的车载系统详细文档+全部资料+高分项目+源码.zip
- 基于嵌入式的基础图形库详细文档+全部资料+高分项目+源码.zip
- 基于嵌入式平台ARM Linux的新冠肺炎疫情监控平台详细文档+全部资料+高分项目+源码.zip
- 基于嵌入式的视觉运动控制详细文档+全部资料+高分项目+源码.zip
- 基于嵌入式综合项目:STM32F407基于ARM Cortex-M4处理器,云服务器Linux操作系统,MySQL数据存储转发详细文档+全部资料+高分项目+源码
- 基于热风控制系统嵌入式项目,基于STM32F1芯片和RT-Thread实时系统开发出温度闭环控制和风速控制详细文档+全部资料+高分项目+源码.zip
- 基于全志V3S的嵌入式开发者打怪升级项目详细文档+全部资料+高分项目+源码.zip
- 基于事件型嵌入式驱动框架。详细文档+全部资料+高分项目+源码.zip
- 基于使用B-Tree作为索引,基于MMap的嵌入式键值数据库详细文档+全部资料+高分项目+源码.zip
- 基于三个嵌入式的小项目:一个是基于科大讯飞的语音识别系统,一个是智能音乐相册,一个是别踩白块小游戏详细文档+全部资料+高分项目+源码.zip
- 基于物联网模式开发的嵌入式程序详细文档+全部资料+高分项目+源码.zip
- 基于以太网通信的电力电子设备运行状态的远程监控嵌入式系统设计详细文档+全部资料+高分项目+源码.zip
评论0