我在父组件中有一个数组和一个映射。
通过使用按钮,我更新了它们两者的值。
我预计一旦prop值更改,两个值都将自动更新,但是只有数组正在更新。
如何在子组件中收听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>