Vue3常用的6种组件通信方式,你一定都用过!

1. props

演示效果:

Props 是 Vue 中最常见的一种父组件将数据传递给子组件的方式。

父组件:




子组件:child.vue



通俗易懂讲解:

1.在父组件中,通过 reactive 定义了响应式变量 father ,包含 name 和 age 属性。

2.父组件通过 import 导入子组件 child.vue,并在 template 中加载子组件。

3.通过 “:” 将子组件的 name 属性和父组件的 father.name 属性进行绑定,将子组件的 age 属性和父组件的 father.age 属性进行绑定,

4.父组件按钮 click 事件绑定 changeData 方法,点击按钮修改父组件变量 father 的值。

5.子组件通过 defineProps 接收父组件传递的数据。其中子组件 name 变量接收父组件 father.name 的值, 子组件 age 变量接收父组件 father.age 的值,

2. $emit

演示效果:

子组件可以使用 $emit 方法触发一个事件,父组件可以通过监听这个事件来实现组件之间的通信。

父组件




子组件




通俗易懂讲解:

1.在父组件中,通过 reactive 定义了响应式变量 father ,包含 name 和 age 属性。并通过插值表达式显示 name 和 age 的初始值。

2.父组件通过 import 导入子组件 child.vue,并在 template 中加载子组件。

3.父组件定义修改 name 和 age 属性的方法 changeData。 通过 ”@“ 将子组件要调用的 changeFatherData 方法和父组件的 changeData 方法进行绑定。

4.子组件通过 defineEmits 定义要调用的父组件的方法 changeFatherData。

5.子组件点击按钮通过 emits 调用定义的父组件方法 changeFatherData,并传递数据。

3. defineExpose 和 ref

演示效果

子组件通过 defineExpose 暴露需要共享的数据,父组件可以通过 ref 获取子组件的数据。父组件需要定义一个和子组件 ref 属性同名的变量。

父组件




子组件



通俗易懂讲解:

1.子组件定义相关的变量和方法,并通过 defineExpose 暴露相关数据。

2.父组件通过 import 导入子组件 child.vue,并在 template 中加载子组件。父组件定义 childRef 变量,通过 ref=”childRef” 绑定子组件。

3.父组件点击按钮通过 childRef 修改子组件暴露的变量和方法。

4. provide 和 inject

演示效果

父组件通过 provide 向子孙组件传递数据,子孙组件通过 inject 接收数据

父组件



子组件




通俗易懂讲解:

父组件通过 provide 向子组件传递数据,子组件通过 inject 接收数据

5. v-model

演示效果

v-model 用于在父子组件之间实现双向数据绑定。

父组件




子组件




通俗易懂讲解:

1.子组件通过 v-model:name 绑定父组件的 fatherName 变量, v-model:age 绑定父组件的 fatherAge 变量。

2.子组件通过 defineEmits 定义绑定父组件的事件。

3.子组件通过 emit 发布事件,update:name 对应 v-model:name,update:age 对应 v-model:age。也就是 v-model: 要和 update: 后面的属性名一样。

6. Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。说白了就是把一些共享的数据放到 vuex 中,任何组件都可以进行使用。

安装 vuex

npm install vuex@next

在 /src/store 文件夹下新建 index.js 文件

import { createStore } from 'vuex';
export const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    incrementCount(state) {
      state.count++;
    }
  },
  actions: {
    increment(context) {
      context.commit('incrementCount');
    }
  },
  // 计算属性
  getters: {
    getCount(state) {
      return state.count;
    }
  }
});

在 main.js 里面配置 store

演示效果

父组件或者子组件





阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=20189,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?