博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue父子组件通信
阅读量:6606 次
发布时间:2019-06-24

本文共 1363 字,大约阅读时间需要 4 分钟。

组件目录结构

parent

child

API: \$emit、 \$on、 \$refs、 props

1、父子组件通信

QQ20181224-150051@2x.png

需求合理性我们先不考虑,demo就为了搞清怎么通信,我们要求:

1、父组件传值给子组件,同时父组件input输入框value也可同步到子组件
2、点击子组件加减子组件数字跟随变动, 父组件input value跟随变动,

父组件
子组件
父组件引入子组件
import addChild from '@/components/add'
父子件注册子组件
//并在父组件内注册子组件components:{    addChild}
父组件html
// v-bind:count="count" 父组件传递值给子组件,v-on:add="add"监听子组件 (用v-bind和v-on有助于更好的理解,熟悉了我们可以简化)    
子组件接收父组件传递的值
props:{        count:{            //约定数据类型            type: Number,              //默认值            default: 0        }    }接收父组件传递的值count
发送事件
methods:{        add(){            this.$emit('childAdd',this.count + 1)        },        reduce(){            this.$emit('childReduce', this.count - 1)        }    }//父组件监听子组件指令childAdd、childReduce 并触发父组件方法add、reduce

以上父组件穿值给子组件,子组件触发事件给父组件搞定,总结一下,父组件v-bind:count="count"穿值给子组件,子组件props:接收(props接收的父组件的值相当于子组件内定义data只不过不能直接修改疑问可搜索子组件为什么不能直接修改父组件值),继续,子组件定义方法并执行emit指令定义指令名字“childAdd、childReduce”,当子组件触发add、reduce方法触发emit并发指令给父组件,父组件v-on:childAdd(简写@childAdd) 监听并触发父组件方法,如下图

QQ20181224-160938@2x.png

接下来我们再用$on,监听指令不在dom内,直接写在js中 上图

QQ20181224-165518@2x.png

标注忽略了 child组件ref="addChild" 和普通获取操作dom一样

我们再看看console this.refs

image.png

这样我们就可以做到和dom内监听子组件一样的效果

当然这样写感觉恶心了不少,不过我是为了引出父组件直接操作子组件方法做个引子

给父组件加一个功能可以改变子组件显示值(还是那句话不管合不合理我们只看怎么实现)

image.png

同样还是用ref来获取子组件,这样可以直接触发子组件方法。

ok父子组件通信算是说完了

你的点赞是我的动力 谢谢

转载地址:http://dubso.baihongyu.com/

你可能感兴趣的文章
Python正则表达式初识(四)
查看>>
不务正业的前端之SSO(单点登录)实践
查看>>
配置通过VLANIF实现跨设备VLAN内通信
查看>>
一站式计费解决方案——腾讯计费首次亮相昆明
查看>>
Linux-正则表达式
查看>>
文字转语音转换的方法有哪些?
查看>>
基本shell脚本的编辑及变量
查看>>
免密码登陆
查看>>
加密和解密 tar
查看>>
我的友情链接
查看>>
[李景山php]每天TP5-20161216|thinkphp5-helper.php-1
查看>>
VMware、Workstation 使用
查看>>
Windows Server 2012正式版RDS系列⑽
查看>>
The MySQL server has gone away
查看>>
Hibernate导出表代码
查看>>
用户输入和while循环
查看>>
keystone验证安装
查看>>
将datatable 保存为 Excel文件(高效率版本)
查看>>
C/C++五大内存分区(转)
查看>>
System V 共享内存区
查看>>