【发布时间】:2020-01-03 11:03:28
【问题描述】:
我在父组件中有一个数组和一个映射。
通过使用一个按钮,我更新了它们的值。
我预计一旦道具值更改,这两个值都会自动更新,但只有数组被更新。
如何在子组件中监听 Map 的更新?
// Parent Component
<template>
<div>
<ChildComponent :map-data.sync="mapData" :array-data.sync="arrayData"></ChildComponent>
<br>
<b-button variant="outline-primary" v-on:click.prevent="updateData">update data</b-button>
</div>
</template>
<script>
export default {
name: "Parent-Component",
components: {
ChildComponent
},
data() {
return {
mapData: new Map(),
arrayData: []
}
},
created() {
this.mapData.set("A", 0);
},
methods: {
updateData() {
this.mapData.set("A", this.mapData.get("A") + 1);
this.arrayData.push("newData");
}
}
};
</script>
// Child component script
<script>
export default {
name: "Child-Component",
props:['arrayData', 'mapData'],
components: {
},
watch: {
mapData: function () {
console.log("this is never called");
},
arrayData: function() {
console.log("this is called as expected");
}
}
};
</script>
【问题讨论】:
标签: vue.js