我开始 https://laracasts.com/series/learning-vue-step-by-step 系列。我在 Vue、Laravel 和 AJAX 课程上停了下来,但出现了这个错误:
vue.js:2574 [Vue 警告]:避免直接改变 prop,因为只要父组件重新渲染,该值就会被覆盖。相反,使用基于道具值的数据或计算属性。正在变异的道具:“列表”(在组件中找到)
我在 main.js 中有这段代码
Vue.component('task', {
template: '#task-template',
props: ['list'],
created() {
this.list = JSON.parse(this.list);
}
});
new Vue({
el: '.container'
})
当我覆盖列表道具时,我知道问题出在 created() 中,但我是 Vue 的新手,所以我完全不知道如何解决它。有谁知道如何(并请解释原因)修复它?
原文由 Dariusz Chowański 发布,翻译遵循 CC BY-SA 4.0 许可协议
这与 在 Vue 2 中对 prop 进行本地变异被视为反模式 这一事实有关
如果你想在 本地改变一个 prop ,你现在应该做的是在你的
data
中声明一个使用props
值作为初始值的字段,然后改变副本:您可以在 Vue.js 官方指南 上阅读更多相关信息
注意 1: 请注意, _您的
prop
和data
不应 使用相同的名称_,即:注意 2: 由于我觉得关于
props
和 react 有一些混淆,我建议你看看 这个 线程