【发布时间】:2019-04-03 07:34:35
【问题描述】:
我是 vue.js 的新手,在以下场景中苦苦挣扎。 我通过道具将一个充满对象的数组发送到我的路由器视图。
在我的一个路由器视图组件中,我在多个函数中使用了这个数组,用 'this.data' 引用它,并将它保存在一个新变量中的函数中,这样我就不会覆盖实际的 prop 数据。
但是函数会覆盖原始的道具数据并操作道具的数据。
这是我的问题的一个抽象示例:
App.vue
<template>
<div>
<router-view :data='data'></router-view>
</div>
</template>
<script>
export default {
data: function() {
return {
data: [],
};
},
created: function() {
this.getData();
},
methods: {
getData: function() {
this.data = // array of objects
},
}
路由组件:
<script>
export default {
props: {
data: Array,
},
data: function() {
return {
newData1 = [],
newData2 = [],
}
}
created: function() {
this.useData1();
this.useData2();
},
methods: {
useData1: function() {
let localData = this.data;
// do something with 'localData'
this.newData1 = localData;
}
useData2: function() {
let localData = this.data;
// do something with 'localData'
this.newData2 = localData;
}
}
}
</script>
useData2 中的“localData”是根据 useData1 中的更改进行操作的,因此我不会覆盖 data 属性。
为什么我要覆盖 prop 以及如何防止它?
【问题讨论】:
标签: javascript vue.js vuejs2