gpt4 book ai didi

vue.js - 是否可以根据父组件的 props 在 extends : property, 中动态添加图表类型?

转载 作者:搜寻专家 更新时间:2023-10-30 22:49:35 25 4
gpt4 key购买 nike

我有一个 vue chartjs 组件,它导入了整个 vue-chartjs 库。我的想法是,是否有可能以某种方式传递我想要的图表类型并将其添加到“扩展:VueCharts.charttype?”。在我提供的示例中,它扩展了 VueCharts.Line,我需要动态插值这个属性,从 props 传递。此图表类型是否可能动态地来自父 Prop 以及如何?

<script>
import { VueCharts } from "vue-chartjs";

export default {
extends: VueCharts.Line,
props: ["chartdata", "options"],
mounted() {
this.renderChart(this.chartdata, this.options);
}
}
</script>
<style scoped>

</style>

最佳答案

因为 extends 和 mixin 一样,你需要传递一个动态 mixin,为此你需要两个组件,假设我们有组件 ChartWrapper :

<template>
<div>
<div>{{ chartType }}</div>
<chart :chart-data="datacollection"/>
</div>
</template>

<script>
import Chart from "./Chart";
import { VueCharts, mixins } from "vue-chartjs";
const { reactiveProp } = mixins;
export default {
name: "ChartWrapper",
components: {
Chart
},
props: {
chartType: {
type: String,
required: true
}
},
data() {
return {
datacollection: {
labels: [this.getRandomInt(), this.getRandomInt()],
datasets: [
{
label: "Data One",
backgroundColor: "#f87979",
data: [this.getRandomInt(), this.getRandomInt()]
},
{
label: "Data One",
backgroundColor: "#f87979",
data: [this.getRandomInt(), this.getRandomInt()]
}
]
}
};
},
methods: {
getRandomInt() {
return Math.floor(Math.random() * (50 - 5 + 1)) + 5;
}
},
created() {
if (this.chartType) {
Chart.mixins = [reactiveProp,VueCharts[this.chartType]];
}
}
};
</script>

此组件将 chartType 作为 prop,我在脚本顶部将所有图表导入为 VueCharts ==> 1

第二部分:

<script>
export default {
props: ["options"],
mounted() {
// this.chartData is created in the mixin.
// If you want to pass options please create a local options object
this.renderChart(this.chartData, this.options);
}
};
</script>

第二个组件只有选项属性,并调用了 renderChart 函数。==> 2

发生了什么?

ChartWrapper 组件通过 chartType 属性接收图表类型,在 created 钩子(Hook)中,如果 chartType 存在,则将图表(由 VueCharts[this.chartType] 解析)分配给 Chart 组件作为 mixin in除了 reactiveProp,我还将图表数据传递给图表组件。

最后调用ChartWrapper组件:

<ChartWrapper chartType="Bar"/>

代码沙箱的实例:https://codesandbox.io/s/vue-template-w9r8k

关于vue.js - 是否可以根据父组件的 props 在 extends : property, 中动态添加图表类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com