学习笔记——Vue中父子组件传值


在vue中,使用组件时,我们可能会在一个页面级组件中调用其他功能组件,例如数量加减的组件,那么如何使父子组件之间进行通信哪?

父组件向子组件传参:

父组件向子组件传递数据或函数,子组件接收后调用,在下面的例子中子组件点击事件触发时,会调用父组件传过来的函数,从而改变父组件中的数据msgFather,进而改变子组件中的msgSon。

<!-- 子组件 -->
<template>
	<div>
		<span style="color: red;" v-text="msgSon" @click="changeMsgSon"></span>
	</div>
</template>

<script>
        export default {
                name: 'HelloWorld',
                props: {
                        msgSon: {  type: String, required: true },
                        changeMsgSon: {  type: Function, required: true }
                }
        }
</script>
<!--  父组件 -->
<template>
	<div>这是主页
        <!-- 使用子组件 -->
		<HelloWorld :msgSon="msgFather"  :changeMsgSon="changeMsgFather"></HelloWorld>
	</div>
</template>

<script type="text/ecmascript-6">
	    import HelloWorld from '../../components/HelloWorld';
        export default {
            name: 'Home',
	        data: function() {
                return {
                        msgFather: '你好,世界!'
                       };
	        },
	        components: {
                        HelloWorld
	        },
	        methods: {
                changeMsgFather: function() {
                        this.msgFather = '世界,你好!';
                }
	        },
        };
</script>

子组件向父组件传参:

第一种方式:函数调用传参

父组件向子组件传递数据或函数,子组件接收后调用,在下面的例子中子组件点击事件触发时,会调用父组件传过来的函数并向该函数中传递一个参数,从而改变父组件中的数据msgFather,进而改变子组件中的msgSon。以下例子中代码相对于上一例子只改变了两处地方。

<!-- 子组件:接收后的函数加入了参数 -->
<span style="color: red;" v-text="msgSon" @click.self="changeMsgSon('久违了,世界!')"></span>

<!-- 父组件:传递的值用接收的形参来赋值 -->
changeMsgFather(msg) { this.msgFather = msg; }

第二种方式:emit发射事件传参

子组件向父组件发射一个事件,可以带参数,也可以不带参数。父组件监听这个事件,并作出相应的操作

<!-- 子组件 -->
<span style="color: red;" v-text="msgSon" @click.self="$emit('changeMsg', 'Hello')"></span>
props: { msgSon: {  type: String, required: true } }

<!-- 父组件 -->
<HelloWorld :msgSon="msgFather"  @changeMsg="changeMsgFather"></HelloWorld>

第三种方式:v-model实现

模拟了vue中的v-model来实现父子组件之间的传参,与第一个实例不同之处如下:

<!-- 子组件 -->
<span style="color: red;" v-text="msgSon" @click.self="$emit('changeMsg', 'Hello')"></span>
props: { msgSon: String },
model: {
        prop: "msgSon",
	    event: "changeMsg"
}

<!-- 父组件 -->
<HelloWorld v-model="msgFather"></HelloWorld>

以上就是现在学习的实现父子组件之间传参的三种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一一GG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值