Vue组件通讯的多种方式(个人记录)
一:常用写法
父组件
<template><div><aa class="abc" :snycTest.sync="test" ></aa>{{'外面的值:' + test}}<button @click="fn">外面改变里面</button></div>
</template><script>
import aa from './test.vue'export default {data () {return {test: ''}},methods: {fn () {this.test += 1}},components:{aa}}
</script>
子组件
<template><div><ul><li>{{'里面的值:'+ snycTest}}</li><button @click="fn2">里面改变外面</button></ul></div>
</template><script>export default {props: {snycTest: ''},methods: {fn2 () {this.$emit('update:snycTest', this.snycTest+1)
//这儿是关键 update:snycTest 自定义事件会告诉父组件将父组件的
//test值改为this.snycTest+1,并传回给子组件。} } }
</script>
二:v-model写法
上述代码可变为
父组件
<template><div><aa class="abc" v-model="test" ></aa> // 组件中使用v-model{{'外面的值:' + test}} // 这儿试验test与内部msg值为双向绑定关系<button @click="fn">外面改变里面</button></div>
</template><script>
import aa from './test.vue'export default {data () {return {test: ''}},methods: {fn () {this.test += 1 }},components:{aa}}
</script>
子组件
<template><div><ul><li>{{'里面的值:'+ msg}}</li><button @click="fn2">里面改变外面</button></ul></div>
</template><script>export default {model: { // 使用model, 这儿2个属性,prop属性说,我要将msg作为该组件被使用时(此处为aa组件被父组件调用)v-model能取到的值,event说,我emit ‘cc’ 的时候,参数的值就是父组件v-model收到的值。prop: 'msg',event: 'cc'},props: {msg: ''},methods: {fn2 () {this.$emit('cc', this.msg+2)}}}
</script>
三:v-bind="$attrs" 传递父组件prop、class、style;v-on="$listeners"传递父组件上的事件监听器和修饰符
假设引入了饿了么UI,把el-input二次封装
子组件
<template><el-input v-bind="$attrs" v-on="$listeners"></el-input>绑定该两属性
</template><style scoped>
.el-input >>> .el-input__inner {border-top: none;border-left: none;border-right: none;
}
</style>
父组件
<template><div><s-custom-wrap v-model="value" @focus="onInputFocus"></s-custom-wrap>
//v-model中的value可直接定义;focus事件可直接传递</div>
</template><script>
import SCustomWrap from "./SCustomWrap";export default {components: {SCustomWrap},data() {return {value:""};},methods: {onInputFocus() {console.log("focus");}}
};
</script>
ps:个人简单记录,稍微不用就忘记了,编码粗糙格式混乱请轻喷
Vue组件通讯的多种方式(个人记录)相关推荐
- vue组件间通信六种方式
vue组件间通信六种方式 组件之间的传值通信 组件之间的通讯分为三种:父传子.子传父.兄弟之间的通讯: props/$emit 父传子:主要是通过props来实现的 具体实现:父组件通过import引 ...
- vue组件间通信六种方式(完整版)
前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示 ...
- Vue 组件之间的传值方式有哪些?
Vue 组件之间的传值方式有哪些? 在平常写Vue项目时,组件传值必不可少,今天我们就要总结一下有哪些种方式呢? 1.父组件向子组件传值(用props) 子组件 <template>< ...
- vue组件传值的十种方式
vue组件传值的十种方式 一.props 父传子 子组件 // 第一种数组方式 props: [xxx, xxx, xxx] // 第二种对象方式 props: { xxx: Number, xxx: ...
- Vue组件通讯方式 provide/inject 介绍以及使用场景
文章目录 vue的通讯方式 provide / inject的缺点 使用办法 代码案例展示一(provide字符串) 代码案例展示二(provide返回一个方法,并且方法返回字符串) vue的通讯方式 ...
- Vue 组件间通信六种方式
前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示,A 和 B.B 和 C.B 和 D ...
- vue组件通讯:父传子、子传父、事件发射详解
1.组件通讯 每个组件有自己的数据, 提供在data中:每个组件数据独立, 组件数据无法互相直接访问 (合理的) 但是如果需要跨组件访问数据, 怎么办呢? => 组件通信组件通信的方式有 ...
- 九段刀客:vue组件通讯
组件通信的方法: 1.props和emit 2.vuex 3.bus 4.children和parent 5.ref props和emit() 说明:props和emit用于父子组件通讯,props父 ...
- Vue组件通信的六种方式
前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.一般来说,组件可以有以下几种关系: 如上图所示,A 和 B.B 和 C.B 和 D ...
最新文章
- 算法----------最长上升子序列(Java 版本)
- cannot create file怎么解决_内核问题解决方法记录
- IDEA中cannot resolve method getBean in applicationContext的解决方法
- Nauuo and Chess
- 【重点】Java大厂面试10个知识点汇总
- zabbix agent监控主机配置
- java中什么是底层数据结构_JavaScript 对象的底层数据结构是什么
- php建一个表按删除就删除,mysql表的清空、删除和修改操作详解
- 5.产品的三种流程图,你都知道吗?
- 智能优化算法应用:基于麻雀搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
- 二维树状数组 探索进行中
- PLC编程入门基础知识
- PHP 是最好的语言?关于 PHP 开发未来的 6 点建议
- 论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解
- 程序员再忙也应该看看《琅琊榜》
- cmd命令导入.dmp文件
- eem二级c语言题库哪种比较好,EEM18DCAD边缘板连接器供应【科美奇科技】Sullins华南地区渠道商...
- 编辑word文档过程中输入法无法正常使用
- VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
- vue3+echart5 遇到的报错:Cannot read properties of undefined (reading ‘type‘)