组价三部曲

  1. 创建组件。
  2. 注册组件。
  3. 使用组件。

组件之间的数据传递的方式
1. 父传子 :通过props属性传递
2. 子传父 通过$emit属性,用来发布自定义事件
3. 兄弟组件之间的传递

1.父传子

  1. 把父组件的数据以动态属性的方式放在当前子组件的行间属性上
  2. 在子组件中用props接收到这个属性 (数组、对象)
  3. 在子组件取值使用动态的属性名取值
<body><div id="app"><child :c="msg"></child><child :c="num" :b="obj"></child><child :b="obj"></child></div><script src="vue.js"></script><script>let child={data(){return {//msg:"苏大强" :如果自己身上也有msg这个属性,会去取父组件上的msg}},props:["c","b"],template:"<div>{{c}}{{b}}</div>"}let vm=new Vue({el:"#app",data:{msg:"春光郑好",num:"豫战豫勇",obj:"中国加油"},components:{child}})</script>
</body>

2.子传父

  1. 在VUE中子组件不能直接修改父组件的数据,想更改数据需要通过$emit属性,用来发布自定义事件,进行修改。
  2. 自定义的名称必须小写,@changemoney=
<body><div id="app">父亲: {{money}}<!-- // 自定义事件 --><son :m="money" @changemoney="fn" :b="fn"></son></div><script src="vue.js"></script><script>let son = {data(){return {}},props:["m","b"],// props接收到的属性也会放在组件实例上一份 methods:{add(){// this==> 组件的实例  this.$emit("changemoney",1080);//这里面的1080传给fn中的val// this.b();}},template:"<div>儿子:{{m}}<button @click='add'>点一下</button></div>"}let vm = new Vue({el:"#app",data:{money:888},methods:{fn(val){this.money=val;}},components:{son}});</script>
</body>

子传父中的sync修饰符
代码中的两个方法是上面子传父的语法糖,也就是简写。写了这两个后父组件的methods中的方法就可以不写了。

<body><div id="app">父亲: {{money}}<!-- $event接收的是$emit的第二个参数 --><!-- <son :m="money" @update:m="money=$event"></son> --><son :m.sync="money" :v.sync="val"></son></div><script src="node_modules/vue/dist/vue.js"></script><script>// 语法糖let son = {data(){return {}},props:["m","v"],methods:{add(){this.$emit("update:m",2000);this.$emit("update:v",8899);}},template:"<div>儿子:{{m}}<button @click='add'>多要点</button>{{v}}</div>"}new Vue({el:"#app",data:{money:888,val:1000},methods:{},components:{son}});</script>
</body>

3.兄弟之间的数据传递 (eventBus)

兄弟之间的组件数据传递:eventBus;
$on : 订阅
$emit : 发布;轮询对应的事件池,让其中的方法执行
let eventBus = new Vue;// 这就是一个容器;联系了兄弟之间的纽带
下面写一个简单的案例,点弟弟组件让哥哥组件变绿,点弟弟让哥哥变红

<body><div id="app"><bro1></bro1><bro2></bro2></div><script src="../VUE上课/vue.js"></script><script>// 兄弟之间的组件数据传递:eventBus;// $on : 订阅// $emit : 发布;轮询对应的事件池,让其中的方法执行let eventBus = new Vue;// 这就是一个容器;联系了兄弟之间的纽带let bro1 = {data(){return {color:"红色"}},created(){//这里面可以那倒methods中的方法,但是不能拿到真实的DOMeventBus.$on("changeGreen",this.changeGreen)},methods:{fn1(){eventBus.$emit('changeRed');},changeGreen(){this.color="绿色"}},template:"<div>{{color}}<button @click='fn1'>变红</button></div>"};let bro2 = {data(){return {color:"绿色"}},created(){eventBus.$on("changeRed",this.changeRed)},methods:{changeRed(){this.color="红色";},fn2(){eventBus.$emit('changeGreen');}},template:"<div>{{color}}<button @click='fn2'>变绿</button></div>"};let vm = new Vue({el:"#app",data:{},components:{bro1,bro2}})</script>
</body>

4. Vuex 适用于 父子、隔代、兄弟组件通信

  1. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。
  2. Vuex 的状态存储是响应式的。当 Vue 组件从store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  3. 改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化。
    这里面详细解释了一下什么是VUEX可以参考一下
    https://blog.csdn.net/Cool_so_cool/article/details/105467214

VEU中的组件之间的数据传递相关推荐

  1. WEB前端 vue学习二 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  2. Vue之组件之间的数据传递

    Vue的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据,必须使用特定的方法才能实现组件之间的数据传递. 下列为在vue-cli创建项目中的操作 一·父组件向子组件传递数据 在Vue中 ...

  3. uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...

    •我们在学习Vue的时候,难免会使用各个组件之间传递数据.•先来介绍一下Vue中组件传递的方式,有父组件传递给子组件数据,子组件传递给父组件数据,父组件直接获取子组件中数据,子组件直接获取父组件数据以 ...

  4. react中父子组件数据传递,子组件之间的数据传递

    首先有三个js文件,index.js(父组件) baseForm.js(子组件) etable.js(子组件) 在index.js中定义一个arr数组,传给BaseForm组件 import Reac ...

  5. 实现非父子之间通信,兄弟组件之间的数据传递--eventBus

    vue中,组件传值的方法常见的也就那几种, 1.父组件向子组件传值,用props 属性, 2.子组件主要通过事件传递数据给父组件子向父传数据可以用$emit触发传,但是这种方法无法实现兄弟组件直接传数 ...

  6. react 组件怎么公用_在React中的组件之间共享数据

    我正在开发使用Meteor和React作为视图引擎的应用程序 考虑下图: 当触发C4按钮单击事件时,我需要更改C2组件状态.由于他们没有直接关系,因此我无法直接从C4进入C2状态. 另一个示例是从Co ...

  7. vue3 语法之 父组件,子组件之间的数据传递

    世事洞明皆学问,人情练达即文章.(<红楼梦>) 子组件使用v-model 父组件 // father.vue <template><div class="fat ...

  8. 三个activity之间跳转 数据传递_第二百四十二回:Android中Fragment之间的数据传递概述...

    各位看官们大家好,上一回中咱们说的是Android中Activity之间数据传递的例子,这一回咱们说的例子是Fragment之间的数据传递.闲话休提,言归正转.让我们一起Talk Android吧! ...

  9. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据 在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今 ...

最新文章

  1. RIM 将在今天发布新的 BlackBerry 7 OS 手机
  2. Angular26 ng-content和ng-container、投影的使用
  3. 学php为什么要学linux,为什么 PHP 程序员应该学习使用 Swoole
  4. 工作和人工智能的未来
  5. Lync Server 2010的部署系列_第六章 安装配置拓扑生成器、前端Server、前端池
  6. linux-Apache权限限制IP端口域名+DNS域名解析
  7. linux 查看系统位数命令,怎么用命令行查看Linux系统位数
  8. SpreadJS 2021 V14.1 Crack
  9. 5V 升压 8.4V供电5V 转转 8.4V 做两节锂电池充电芯片FS2114
  10. Android登录界面用SharedPreferences实现记住密码功能
  11. Random Projection 随机投影法
  12. android 耳机孔 红外,手机遥控器,3.5mm耳机接口红外遥控改造解析
  13. stm32---RS485半双工通信
  14. 一文读懂Java接口
  15. 一本永不过时的元宇宙专著《元宇宙:通往无限游戏之路》
  16. 如何看待人工智能技术的变革与未来?
  17. 使用Aosp源码编译安卓ROM(小米,一加,三星,中兴等)
  18. python随机选择一个幸运观众_从十名观众中随机选取8名幸运观众,不能重复选取同一个观众为幸运观众(CPrimerPlus第十六章第五题)...
  19. php无法访问_php-我无法访问[http:// localhost / phpmyadmin /]
  20. 拥抱机遇,夯实内功,拆解实体门店数字化转型中体验思维

热门文章

  1. php随机数生成代码,PHP随机数生成代码与使用实例分析
  2. JavaWeb(12)之文件的上传和下载
  3. 以太坊:下一代智能合约和去中心化应用平台
  4. linux ldd 移植
  5. 并联直流稳压电源的优缺点
  6. 布施的功德_【中台世界】佛典故事 ─ 布施的五大功德
  7. 电脑内部硬件组成(适合新手,小白阅读,简单易懂)
  8. DELL服务器 操作系统驱动程序安装
  9. 一点一点学习C++之笔记004
  10. 如何在github上添加密钥