0

我已经chartData使用 vuex 映射到状态属性。我想做的是在更新数据集时更新图表。mixinchartData根据文档自动设置了一个观察者,但我不确定如何将它与 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);
  }
};

市场图表.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 与映射的状态变量一起使用或以其他方式触发状态更改的更新?

4

1 回答 1

1

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

通常你可以毫无问题地一起使用 vuex 和 vue-chartjs:这是一个示例 repo:https ://github.com/apertureless/vue-chartjs-vuex

但是 vue-chartjs 版本是旧的。但概念是一样的。

于 2018-08-12T12:38:20.853 回答