vue组件之子组件和父组件
在看官网和学习的过程中,有些不明确子组件和父组件的定义,为了方便后期学习和理解去网站上搜索了一下相关的解释
1.使用的地方是父组件,定义的地方是子组件,虽然他们是同一个组件
2.Vue.component()是制作子组件,<child></child>是制作好了,在父组件环境里面用
父组件不用动,子组件直接用props拿就可以了,
子组件传父组件的时候用emit,父组件用on接收,
有时候我们经常分不清什么是父组件,什么又是子组件。现在来简单说下:我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装的组件的文件叫做父组件,被引入的组件叫做子组件。以上是我个人的理解含义,那么现在就直接上代码吧!
子组件:
<template>
<div>
{{msg}}
</div>
<p>{{hello}}</p>
<p>{{hellotests}}</p>
<button @click="btns">按钮</button>
</template>
<script>
export default{
data(){
return{
// 子组件中声明的变量
msg:'',
hello:'',
hellotests:''
}
},
created(){
},
watch:{
// 监听从父组件传过来的数据是否发生改变,然后赋值给变量
CCCount() {
this.msg = this.msgTest
this.hello = this.helloTest
}
},
methods:{
// 点击按钮,子组件操做父组件中的函数
btns(){
this.$emit('childsClick', '子组件触发父组件中的函数')
},
// 被父组件调用的子组件函数
msgs1(){
this.hellotests = '哈哈,我是父组件调用子组件的函数'
}
},
// 接收从父组件传过来的数据
props:['msgTest', 'helloTest', 'CCCount']
}
</script>
父组件:
<template>
<div>
test
</div>
<p>hello world</p>
<span>{{btnVal}}</span>
<msgChild
ref="msgRef"
@childsClick="btnClick"
:msgTest='msgTest2'
:helloTest='helloTest2'
:CCCount='CCCount'
>
</msgChild>
</template>
<script>
// 引入子组件
import msgChild from './test.vue'
export default{
data(){
return{
msgTest2:'',
helloTest2:'',
CCCount:0,
btnVal:''
}
},
components:{
// 声明子组件名字
msgChild
},
created(){
this.msgs()
},
methods:{
msgs(){
// 给子组件变量赋值
this.msgTest2 = '测试1'
this.helloTest2 = '测试2'
},
btnClick(val) {
this.CCCount++
this.btnVal = val
// 触发子组件中的函数
this.$refs.msgRef.msgs1()
}
}
}
</script>
从父组件代码可知,test.vue是子组件,并且在父组件中被命名成 msgChild ,我们在父组件中放置子组件的位置直接写子组件的名字即可,这样就是相当于放置了整个子组件。
先说父组件是怎么传值给子组件的:我们从父组件可知有这些变量,
:msgTest='msgTest2'
:helloTest='helloTest2'
:CCCount='CCCount'
例如:msgTest就是子组件接收的变量(无需再在子组件中声明),需要在子组件中的props中接收( props:['msgTest', 'helloTest', 'CCCount'] )。msgTest2是父组件的变量,需要在父组件中声明。我只需要在父组件中给msgTest2赋值即可,子组件中的this.msgTest便能接收到。
那么子组件是怎么向父组件中传值的呢?是通过触发父组件中的函数,并传递一个参数来完成传值的,例如:
this.$emit('childsClick', '子组件触发父组件中的函数')
触发父组件中的@childsClick="btnClick"来调用btnClick方法,并向btnClick方法传参 '子组件触发父组件中的函数' , 通过触发方法来向父组件传值。
父组件又是如触发子组件中的函数呢?答案是通过父组件中的 ref 来触发的,父组件中的 this.$refs.msgRef.msgs1() 便是触发子组件中的msgs1()函数。
————————————————
版权声明:本文为CSDN博主「小鱼儿游啊~游」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gaoxin666/article/details/83279001
vue组件之子组件和父组件的更多相关文章
- vue 子组件把数据传递给父组件
<div id="app"> <child v-on:drop='parent'></child> //这里v-on:drop="pa ...
- vue子组件使用自定义事件向父组件传递数据
使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称’,传递给父组件的数据) <!DOCTYPE html> <html lang= ...
- Vue的父子组件v-model双向绑定,父组件修改子组件中绑定的v-model属性
先来看下实现的效果,父组件中有个文本框,在点击下面按钮时弹出抽屉,抽屉里也有个文本框,文本框里的初始值要和父组件的文本框同步,并且修改抽屉里的文本框值时 父组件里的文本框值也要跟着改变 网上有大概三种 ...
- Vue 组件&组件之间的通信 之 父组件向子组件传值
父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 准备获取数据:com-b要获取父组件dat ...
- 【前端vue开发】vue子调父 $emit (把子组件的数据传给父组件)
ps:App.vue 父组件 Hello.vue 子组件 <!--App.vue :--> <template> <div id="app"> ...
- vue $emit 父组件与子组件之间的通信(父组件向子组件传参)
1.首先新建一个子页面为 env.vue的文件(名字这里大家可以自取) 2.然后把子页面引入父页面,代码如图: import env from '@/components/common/env' ex ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值
前端方面,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是传统的js来进行开发,而EasyDSS使用的是webpack+vue来进行开发的,了解vue+webpack的 ...
- 怎样在 Vue 里面使用自定义事件将子组件的数据传回给父组件?
首先, Vue 里面的组件之间的数据流动是 单向 的, 数据可以从父组件传递给子组件, 但不能从子组件传递给父组件, 因为组件和组件之间是 隔离 的. 就像两个嵌套的 黑盒子 . 能通过 props ...
- 【VUE】6.组件通信(一)父组件向子组件传值
1. 前提&知识点 1./components/Father.vue 是父组件, Son.vue 是子组件 2.父组件像子组件通信 props 2.组件通信 1. 新增一个路由入口 /fath ...
- vue子组件数据变化同步到父组件中
方法:通过watch监听子组件数据变化 1.父组件中注册方法 <Child @getChildValue="getChildValue"></Child> ...
随机推荐
- Java-数据类型与编码(ASCII、Unicode 和 UTF-8)
机械硬盘硬件结构(了解)https://diy.pconline.com.cn/cpu/study_cpu/1009/2215404_all.html 一.数据储存单位 1.bit(位) https: ...
- hotspot 线程状态
- CAD二次开发中各类多段线的dxf组码
Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; ed.WriteMessag ...
- 图片加载框架之fresco
FaceBook推出的图片处理框架主页: https://github.com/facebook/fresco中文文档:http://fresco-cn.org/docs/index.html 功能 ...
- 深入理解python中函数传递参数是值传递还是引用传递
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
- 基于.net 4.0框架的Cipher演示程序
using System.Text; namespace Cipher.Algorithm { static class Caesar { static public string Encrypt(s ...
- 【Python开发】查看数据类型
import types aaa = 0 print type(aaa) if type(aaa) is types.IntType: print "the type of aaa is i ...
- 【linux杂谈】centos6和centos7中固定IP的方法
众所周知,一大部分集合部署的应用服务器内网相互通信都是采用固定IP.在阿里云.腾讯云上申请的云服务器也是固定IP,这就意味着在云平台内部策略划拨肯定是也固定了IP(即便不是采取直接在系统内固定的方式) ...
- stm32 F40x CCM数据区的使用
1. CCM需要打开总线时钟 2. CCM可以作为堆和栈使用 使用分散加载文件直接操作即可 RW_CCMRAM1 0x10000000 { .ANY (HEAP) .ANY (STACK) } 3. ...
- 水晶报表和rdlc报表传入参数筛选
在使用报表向客户展示结果数据时,实时的在报表中显示某些特定的数据是必需的,如:显示的部门.打印的日期等.本文只简单的演示向报表内传入一个字符值. 以下是设计好报表之后传入参数的具体操作 一.首先是水晶 ...