vue父子组件传值,父传子,子传父

14 篇文章 0 订阅

1、父组件向子组件传值

现有两个父子组件,父组件为photoManager.vue,子组件为photoDetail.vue。并且处于同一文件夹下。
在这里插入图片描述

1.1、父组件的代码。

<template>
	<div>
		<photo-detail v-if="photoDetailDialogVisible" :id="id" :item="item"></photo-detail>
	</div>
</template>

<script>
import photoDetail from './photoDetail.vue';

export default {
  data () {
    return {
    	photoDetailDialogVisible: true,
    	id: '123456789',
    	item: {
    		name: '小明',
    		isFlag: true
    	}
    }
  },
  components: {photoDetail},
  methods: {
  	openPhotoDetailDialog () {
  		this.id = '000';
  		this.item.name = '小王';
  	}
  }
}
</script>

1.2、子组件的代码

<template>
	<div></div>
</template>

<script>
export default {
  data () {
    return {
    	
    },
    props: ['id', 'item'],
  }
}
</script>

1.3、限制传递的数据类型

可以限制传递的prop数据类型,包括String、Number、Boolean、Array、Object、Function、Promise,若要限制数据类型,则子组件中代码如下:
此时,如果父组件中的数据不符合条件时会在控制台报错提示。

<template>
	<div></div>
</template>

<script>
export default {
  data () {
    return {
    	
    },
    props: {
    	id: String,
    	item: Object
    },
  }
}
</script>

1.4、 父组件的值变化会同步到子组件

如果初始化子组件后调用了父组件中的openPhotoDetailDialog方法,子组件中的id与item.name也会同步改变,但是不允许在子组件中修改传递的值。

2、子组件向父组件传值

2.1、$emit事件

e m i t 触 发 当 前 实 例 上 的 事 件 。 附 加 参 数 都 会 传 给 监 听 器 回 调 。 ∗ ∗ 方 法 参 数 ∗ ∗ : emit触发当前实例上的事件。附加参数都会传给监听器回调。 **方法参数**: emitemit(eventName, […args]);
事件名/方法名:{string} eventName
要传递的参数:[…args]

2.2、子组件代码

<template>
	<button v-on:click="updateParentValue">点击传值</button>
</template>

<script>
export default {
  data () {
    return {
    	
    },
    methods: {
    	updateParentValue () {
    		this.$emit('updateParentValue', 'abcde');
    	}
    }
  }
}
</script>

2.3、父组件代码

<template>
	<div></div>
</template>

<script>
export default {
  data () {
    return {
    	
    },
    methods: {
    	updateParentValue (childrenValue) {
    		console.log(childrenValue); // 'abcde'
    	}
    }
  }
}
</script>
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值