vue组件之间进行传值的方法
作者:KinHKin 时间:2024-04-27 15:48:04
前言
目前在做vue的项目,用到了子组件依赖其父组件的数据,进行子组件的相关请求和页面数据展示,父组件渲染需要子组件通知更新父组件的state,父子组件之间的传值一般有三种方法:
父传子子传父非父子传值
注意:
父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息。
接下来,我们会通过实例代码来看的更清晰,理解更容易:
1.父组件向子组件进行传值
父组件代码:
<template>
<div>
父组件:
<el-input v-model="val" style="width:300px" />
<child :value="val" />
</div>
</template>
<script>
import child from './child.vue'
export default {
name: 'Parent',
data() {
return {
val: '我是父组件'
}
},
components: {
child
},
}
</script>
子组件代码:
<template>
<div class="child">
子组件: {{ value }}
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
}
},
props: ['value']
}
</script>
<style scoped>
.child {
margin-top: 20px;
}
</style>
2.子组件向父组件进行传值
父组件代码:
<template>
<div>
父组件:
<el-input v-model="val" style="width:300px" />
<child :value="val" @bindMsg='msgFun' />
</div>
</template>
<script>
import child from './child.vue'
export default {
name: 'Parent',
data() {
return {
val: '我是父组件'
}
},
components: {
child
},
methods: {
msgFun(childVal) {
console.log(childVal,'childVal')
this.val = childVal
}
}
}
</script>
子组件代码:
<template>
<div class="child">
子组件: {{ value }}
<el-button @click="$emit('bindMsg', '我是子组件')">点击改变父组建数据</el-button>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
}
},
props: ['value'],
}
</script>
<style scoped>
.child {
margin-top: 20px;
}
</style>
3.非父子组件之间的传值
.sync可以帮我们实现父组件向子组件传递的数据的双向绑定,所以子组件接收到数据后可以直接修改,并且会同时修改父组件的数据
ref绑定在子组件上,引用的指向就是子组件的实例,父组件可以通过 ref 主动获取子组件的属性或者调用子组件的方法
父组件代码:
<template>
<div>
父组件:
<el-input v-model="val" style="width:300px" />
<el-button @click="childRefClick">父组件ref点击</el-button>
<child :value="val" @bindMsg='msgFun' :data.sync='data' ref='child' />
</div>
</template>
<script>
import child from './child.vue'
export default {
name: 'Parent',
data() {
return {
val: '我是父组件',
data: ''
}
},
components: {
child
},
methods: {
msgFun(childVal) {
console.log(childVal, 'childVal')
this.val = childVal;
},
childRefClick() {
//ref获取子组件实例的属性和方法
const child = this.$refs.child
console.log(child.name)
child.childBtnClick("调用了子组件的方法")
}
}
}
</script>
子组件代码:
<template>
<div class="child">
子组件: {{ value }}
<el-button @click="childBtnClick">点击改变父组建数据</el-button>
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
currenData: {}
}
},
props: ['value', 'data'],
methods: {
childBtnClick(val) {
console.log(val,'val')
this.$emit('bindMsg', val || '我是子组件')
},
},
}
</script>
<style scoped>
.child {
margin-top: 20px;
}
</style>
非父子组件之间的传值方式还有slot插槽,vuex数据状态管理器等等
来源:https://blog.csdn.net/weixin_42974827/article/details/126651267
标签:vue,组件,传值
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java连接Access数据库的方法
2024-01-14 13:41:17
![](https://img.aspxhome.com/file/2023/6/66056_0s.png)
仿豆瓣分页原型(Javascript版)
2007-11-05 14:04:00
Python从数据库读取大量数据批量写入文件的方法
2024-01-27 14:48:10
浅谈Python中range和xrange的区别
2021-04-18 14:52:13
利用Python实现学生信息管理系统的完整实例
2022-03-12 10:35:03
![](https://img.aspxhome.com/file/2023/9/79619_0s.png)
Python Requests模拟登录实现图书馆座位自动预约
2022-01-31 00:25:46
利用Echarts如何实现多段圆环图
2024-04-28 09:36:22
![](https://img.aspxhome.com/file/2023/1/132881_0s.png)
利用types增强vscode中js代码提示功能详解
2023-07-15 05:57:08
![](https://img.aspxhome.com/file/2023/1/55981_0s.png)
Python实现读取大量Excel文件并跨文件批量计算平均值
2023-10-21 06:53:12
![](https://img.aspxhome.com/file/2023/8/110448_0s.png)
针对Sqlserver大数据量插入速度慢或丢失数据的解决方法
2024-01-21 02:54:46
python绘制发散型柱状图+误差阴影时间序列图+双坐标系时间序列图+绘制金字塔图
2023-09-19 17:50:36
![](https://img.aspxhome.com/file/2023/3/107513_0s.png)
SQL Server 2005 SSIS技巧:动态目的文件名
2008-12-05 15:47:00
Python使用tkinter模块实现推箱子游戏
2022-12-06 08:27:49
![](https://img.aspxhome.com/file/2023/4/125194_0s.png)
python使用wxpython开发简单记事本的方法
2022-05-15 18:06:12
![](https://img.aspxhome.com/file/2023/2/86392_0s.png)
asp如何定义参数?
2010-05-16 15:20:00
JavaScript中对象property的删除方法介绍
2024-06-05 09:29:09
Apache部署Django项目图文详解
2023-12-17 06:51:05
![](https://img.aspxhome.com/file/2023/2/134802_0s.png)
深入解析python中的实例方法、类方法和静态方法
2022-07-23 09:05:57
![](https://img.aspxhome.com/file/2023/8/72828_0s.png)
Python中的延迟绑定原理详解
2022-07-08 16:18:35
SQL语句单引号与双引号的使用方法
2024-01-22 11:35:09