【发布时间】:2020-12-20 05:17:40
【问题描述】:
我的控制台出现此错误
[Vue 警告]:避免直接改变 prop,因为每当父组件重新渲染时,该值都会被覆盖。 相反,使用基于道具值的数据或计算属性。正在变异的道具:“catProducts”
这是我的 vue 组件
<template>
<div>
<table class="table table-striped">
<thead>
<tr>
<th>Product Name</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
<tr v-for="product in catProducts">
<td>
{{ product.name }}
</td>
<td>
<button @click="remove(product)" class="btn btn-danger">Remove</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default{
props: ['category', 'catProducts'],
data(){
return {
}
},
methods: {
remove(product){
axios.delete('/category/products/'+this.category.id+'/'+product.id).then(response => {
this.catProducts = response.data.products;
});
}
}
}
</script>
response.data.products; 返回的是属于该类别的所有产品。
即使我的代码在删除该类别的产品方面做了它应该做的事情,
我的控制台中仍然出现Avoid mutating a prop 错误,我不知道如何修复它。
【问题讨论】:
-
你从哪里得到
catProducts? -
这是 stackoverflow.com/questions/39868963/… 的副本,您只需将 catProducts 属性复制到数据变量中,然后您就可以对其进行变异。
-
另外你不应该直接改变一个道具,但是有一些方法可以解决它
-
应对数据支持可能是一种可能的解决方法,但我认为这并不总是最佳做法。
-
这完全取决于你从哪里得到道具
标签: vue.js