Vue笔记(六)——Vue组件通信Vuex

组件通信

vue本身的组件通信

  • 父==>子:父组件向子组件传参或者调用子组件的方法
  • 子==>父:子组件向父组件传参或者调用父组件的方法
  • 兄弟之间:兄弟组件之间传参或者调用方法

父子通信

  • 传参 - props
思路:定义子组件的属性(自定义),父组件赋值给子组件
  • 调用方法(1) - $refs
思路:定义子组件的属性-ref="a",父组件通过:this.$refs.a.子组件方法();
  • 调用方法(2) - children
思路:父组件通过:this.$children[0].子组件方法();

子父通信

  • 调用方法(1) - $parent.$emit("父组件自定义事件");
思路:父组件在组件的生命周期(mounted)用$on定义事件,子组件用this.$parent.$emit("父组件自定义事件");
  • 调用方法(2) - $emit("父组件自定义事件");
思路:父组件在调用子组件时用v-on把事件传给子组件,子组件用this.$emit("父组件自定义事件")调用父组件传过来的事件
<div id="app"><h1>父组件-{{this.text}}</h1><!-- 子组件 --><child v-on:parentEvent="changeText()"></child>
</div>
<script type="text/javascript">var vm = new Vue({el:"#app",data:{text:''},methods:{changeText(_text){this.text = _text;}},components:{'child':{template:'<p><label>子组件</label><input type="text" v-on:input="change" /></p>',methods:{change(event){this.$emit('parentEvent',event.target.value);}}}}});
</script>
  • 调用方法(3) - parent
思路:父组件在调用子组件时用v-on把事件传给子组件,子组件用this.$parent.父组件事件
<div id="app"><h1>父组件-{{this.text}}</h1><child></child>
</div>
<script type="text/javascript">var vm = new Vue({el:"#app",data:{text:''},methods:{changeText(_text){this.text = _text;}},components:{'child':{template:'<p><label>子组件</label><input type="text" v-on:input="change" /></p>',methods:{change(event){this.$parent.changeText(event.target.value);}}}}});
</script>

兄弟之间的通信

和上面介绍的父子之间通信是一样的,因为任何连个子组件之间都会拥有一个共同的父级组件,所以兄弟组件之间的通信就是子1向父,然后父向子2,这样来达到兄弟之间组件的通信

Vuex - 状态管理通信

跨组件通信的一种实现方式
  • 用到就封装一个组件.js
  • 组件.js
// 设置属性:state
const state = {count = 0;
}
// 设置方法:mutaions
const mutaions = {increment(_state){_state.count += 1;}
}
// 执行方法
const actions = {increment(_content){_content.commit('increment');}
}
// 暴露
export default{state,mutaions,actions
}
  • 集合实例化 store.js
import Vue from 'Vue';
import Vuex from 'vuex';
// 引入组件.js
import transition from './transion.js';
// 实例化对象
const store = new Vue.Store({modules:{transition}
});
// 暴露对象
export default store;
  • 主入口app.js实例化vuex对象
// 引入vuex对象
import store from './vuex/store.js';
// 实例化vuex对象
new Vue({el:"#app",router,store,render:h=>h(app)
});
  • 各组件之间调用

1.调用参数

$store.state.组建名.属性

2.调用方法

$store.dispatch('事件名');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

灼灼夏日 - 遥思故乡 - 赤子无相忘

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 偶然翻看旧照片&#xff0c; 想起没有带过来的一本本诗集、散文集、手抄本、画册 ... 想起母亲的寄挂 ... 想起父亲的沉默 ... 想起少…

钱生钱最好的办法是什么?

当你养成理财的六种好习惯时&#xff0c;你能钱生钱了。这六种习惯是&#xff1a; 习惯一&#xff1a;记录财务情况。能够衡量就必然能够了解&#xff0c;能够了解就必然能够改变。如果没有持续的、有条理的、准确的记录&#xff0c;理财计划是不可能实现的。因此&#xff0c;在…

grid - 隐式命名网格线名称

1.隐式的指定网格线反向指定了隐式的网格区域名称&#xff0c;命名的网格区域隐式的命名了网格线名称. 指定网格区域会给网格区域边线添加隐式的网格线名称。这些网格线的命名是基于网格区域来命名&#xff0c;只是在网格区域名称的后面添加后缀-start或-end. 1 <view class…

前端笔试题小结(一)

前端笔试题小结&#xff08;一&#xff09; 2020-03-13 题目一&#xff1a; 将一个js数组去重。 样例&#xff1a; 输入&#xff1a;[ 1, “apple”, 3, “a”, 3, 1, 5, 6, “a”, 4 ] 输出&#xff1a;[ 1, “apple”, 3, “a”, 5, 6, 4 ] 分析1&#xff1a; 将两个数组循…

2019-3-1

伪静态: .html url(^page/(?P<id>\d).html/$,views.page,namepages) /page/1|2|3.html/ | {% url pages 1|2|3 %} 3.request对象 --method,GET,POST --FILES,META,body,path,get_full_path(),is_ajax(),COOKIE,session 4.CBV处理请求的另外一种方式 from django.…

java 使用 new Date() 和 System.currentTimeMillis() 获取当前 时间戳

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在开发过程中&#xff0c;通常很多人都习惯使用new Date()来获取当前时间。 使用起来也比较方便&#xff0c;同时还可以获取与当前时间…

持币过节也能让钱生钱

今天是国庆长假前最后一个交易日。从盘面上看&#xff0c;投资者包括部分基金公司减仓明显。对于目前大盘高位震荡&#xff0c;很多人选择落袋为安&#xff0c;持币过节&#xff0c;不失为明智之举。但你知道吗&#xff0c;持币过节也能让钱生钱。今天我就来为各位讲讲其中的奥…

关于cat命令修改文件内容(导入变量符号以及变量内容)

关于cat命令修改文件内容&#xff08;导入变量符号以及变量内容&#xff09; cat >1.txt<<END $11 $22 $1 $2 END 查看文件内容为&#xff1a; [rootserver04 ~]# cat 1.txt 1 2[rootserver04 ~]# 说明导入的$1,$2自动被解析了。但是当我们想输入一些变量而不被解析…

Android - AsyncTask你知道多少?

http://www.cnblogs.com/qlky/p/5658070.html 为什么asyncTask最好在主线程初始化&#xff1f;在子线程怎么办&#xff1f; AsyncTask四个方法的执行顺序&#xff1f; mWorker和mFuture对象分别是什么&#xff1f;有什么作用&#xff1f;和doInbackground还有postExecute有什么…

2020-3-15

题目一&#xff1a; 问答 请写出如下代码运行后产生的结果&#xff0c;并给出解释&#xff0c;说明结果是如何得出的。 setTimeout(() > console.log(a)); Promise.resolve().then(() > console.log(b);).then(() > Promise.resolve(c).then((data) > {setTimeout…

Kong-dashboard 安装 启动运行

Kong Dashboard 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Kong is a scalable, open source API Layer (also known as a API Gateway, or API Middleware). Kong runs in front o…

自动让钱生钱方法100%安全稳定

中国区网友问题&#xff1a;   手里有一些余钱&#xff0c;希望找一个方法能够让钱自动生钱。最好不要让我烦心的&#xff0c;能够自动操作。并且不能有风险&#xff0c;本钱绝不能有风险&#xff0c;利润要很丰厚才可以。像银行存款、股票基金就不要介绍了。因为前者生钱太慢…

linux lnmp15 部署laravel项目

使用composer创建一个 laravel项目 安装composer&#xff1a; https://www.jianshu.com/p/ce1d36cbe00f composer create-project laravel/laravel5.5.* --perfer-dist /home/web/blog 复制代码添加虚拟主机配置文件 sudo lnmp vhost add 复制代码注&#xff1a;由于laravel的入…

ReentrantLock源码

ReentrantLock与Synchronized区别在于后者是JVM实现&#xff0c;前者是JDK实现&#xff0c;属于Java对象&#xff0c;使用的时候必须有明确的加锁(Lock)和解锁(Release)方法&#xff0c;否则可能会造成死锁。 先来查看ReentrantLock的继承关系(下图)&#xff0c;实现了Lock和Se…

2020-3-16

题目一&#xff1a; 如何用js获取checked属性值。 通过checked属性可以设置复选框或者单选按钮处于选中状态。 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload ()>{let ckdocument.getElementByI…

让钱生钱!商人赚钱的6条方法

钱&#xff0c;这个是做商人第一件需要了解的东西&#xff0c;如何让钱生钱呢 商人须知&#xff1a; 1、赚钱第一要手上有余银&#xff0c;倒买倒卖相信大家见多了把&#xff0c;手上最好有100W&#xff0c;最少也要50W&#xff0c;如果没有&#xff0c;就先积累哪么多&#xf…

【转】Snackbar和Toast的花式使用,这一篇就够了

https://www.jianshu.com/p/e023bfb6466b 转载于:https://www.cnblogs.com/tc310/p/10679042.html

解决报错: No candidates found for method call XXXX (方法没有调用者)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 No candidates found for method call XXXX 报错如题&#xff0c;指 xxx 这个方法 没有调用者。 我是要直接返回一个 PageImpl 对象…

装饰器概念及运用

#!/user/bin/env python3# -*-encoding"utf-8"-*-# 1.装饰器概念#装饰器本身就是函数&#xff0c;为别的函数添加附加功能。把握两个遵循的条件。# 1.不修改被修饰的源代码内容。# 2.不修改被修饰函数的调用方式。# 装饰器高阶函数函数嵌套闭包# 高阶函数定义:# 1.函…

2020-3-17

题目一&#xff1a; JavaScript 获取倒数第二个li元素 如何利用JavaScript获取li元素集合中的倒数第二个元素。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <style type"text/css"> #box{list-style:none;font-…