父组件
<popup :show="showpopup" @closepop="closepop"></popup>
子组件
<template>
<div :class="show?'container show':'hide'" @click="close">
</div>
</template>
//这是一个弹窗
<script>
export default {
name: "popup",
props:{
show:true,
},
methods:{
close(){
this.show = false;
this.$emit('closepop')
}
}
}
</script>
以上是源码,当我点击弹窗的时候出现了以下报错信息

大概意思是:通过props传递给子组件的show,不能在子组件内部修改props中的show值。
===============
以下是修改后的代码:
父组件
<popup :show="showpopup" @closepop="closepop"></popup>
子组件
<template>
<div :class="show?'container show':'hide'" @click="close">
</div>
</template>
//这是一个弹窗
<script>
export default {
name: "popup",
props:{
show:true,
},
methods:{
close(){
//this.show = false; //这行去掉 不能直接改变props中参数的值
this.$emit('closepop'); //通知父组件改变。
}
}
}
</script>
本文介绍了一个关于Vue.js框架中子组件Props使用不当的问题及其解决方案。具体问题为尝试直接修改通过Props传递过来的值,这违反了Vue的推荐做法。文章提供了修改前后的代码示例,并展示了如何正确地通知父组件进行状态更新。
5万+

被折叠的 条评论
为什么被折叠?



