如何在状态更改时使用mixin更新图表?

时间:2018-08-09 06:29:07

标签: vue.js vuex vue-chartjs

我已经使用vuex将chartData映射到state属性。我想做的是在更新数据集时更新图表。 mixin根据documentation自动在chartData上设置观察者,但我不确定如何在vuex中使用它。

LineChart.js:

import { Line, mixins } from "vue-chartjs";
const { reactiveProp } = mixins;

export default {
  extends: Line,
  mixins: [reactiveProp],
  props: ["options"],
  mounted() {
    this.renderChart(this.chartData, this.options);
  }
};

MarketChart.vue:

<template>
  <div>
    <line-chart :chart-data=chartData :height=height :options=options></line-chart>
  </div>
</template>

<script>

import LineChart from "./LineChart.js";
import { mapGetters, mapState } from "vuex";

export default {
  components: {
    LineChart
  },
  data() {
    return {
      height: 200
    };
  },
  computed: {
    ...mapState({
      chartData: "chartData",
      options: "chartOptions"
    })
  }
};
</script>

商店数据路径为chartData.datasets[i].data

该图表最初呈现正确,并且我知道该状态下的数据已正确更新(更新状态后,如果我在开发中触发热重载,则会使用更新后的数据重新渲染该图表),但该图表未更新。如何将mixin与映射的状态变量一起使用,否则如何触发状态更改的更新?

1 个答案:

答案 0 :(得分:1)

取决于您如何更改数据。 如果仅数据更改而不是标签更改,则观察者可能无法识别更改。

通常,您可以将vuex和vue-chartjs一起使用而不会出现问题: 这是示例存储库:https://github.com/apertureless/vue-chartjs-vuex

但是vue-chartjs版本较旧。但是概念是相同的。