Vue.js:更新子组件的Map prop值

时间:2019-08-30 07:42:07

标签: vue.js

我在父组件中有一个数组和一个映射。
通过使用按钮,我更新了它们两者的值。
我预计一旦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>

1 个答案:

答案 0 :(得分:0)

Vue仍不支持地图反应性IMK。您可以找到对此here

的详细说明(以及可能的解决方法)