Echarts使用笔记1: 在vue-cli2中使用Echarts

一、安装Echarts插件

在已经建好的脚手架的终端中输入

        错误输入npm install echarts --save
        正确输入npm install echarts@4.9.0 --save

下面演示错误输入带来的问题,以及解决办法(不想看可以直接跳到第二步):
在这里插入图片描述
在这里插入图片描述

ps解决上面错误 "export ‘default’ (imported as ‘echarts’) was not found in ‘echarts’

#第一步卸载之前安装的echars版本
npm uninstall echarts --Save

#第二步输入指定版本号安装
npm install echarts@4.9.0 --save

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、在main.js中引入插件

在main.js中加入下面代码:

import echarts from 'echarts'

Vue.prototype.$echarts = echarts

在这里插入图片描述

三、在组件静态获取数据并渲染echarts图表

案例如下:

<template>
  <div>
    <div ref="chart" style="width:100%;height:376px"></div>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  mounted() {
    this.getEchartData();
  },
  methods: {
    getEchartData() {
      const chart = this.$refs.chart;
      if (chart) {
        const myChart = this.$echarts.init(chart);
        const option = {
          xAxis: {
            type: "category",
            data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
          },
          yAxis: {
            type: "value",
          },
          series: [
            {
              data: [120, 200, 150, 80, 70, 110, 130],
              type: "bar",
            },
          ],
        };
        myChart.setOption(option);
        //当窗口发送变化的时候,改变图表的大小
        window.addEventListener("resize", function () {
          myChart.resize();
        });
      }
      //防止多次触发窗口发送变化
      this.$on("hook:destroyed", () => {
        window.removeEventListener("resize", function () {
          myChart.resize();
        });
      });
    },
  },
};
</script>

四、echarts图表自适应容器大小

案例如下:

代码分析:重点将在上面用mounted()调用echarts方法改成了watch监听调用因为created()中获取数据是异步加载的,我们此时要等数据加载完成,才可以绘图。用watch去监听,当数据改变完成后绘图

<template>
  <div>
    <div ref="chart" style="width:100%;height:376px"></div>
  </div>
</template>

<script>
import { getEchartsData } from "../network/charts";

export default {
  name: "HelloWorld",
  data() {
    return {
      option: null,
    };
  },
  created() {
    //获取图表数据
    this.getEchartsData();
  },
  watch: {
    //构建图表
    option() {
      this.$nextTick(() => {
        this.getEchartData();
      });
    },
  },
  methods: {
    /**
     * 发送网络请求
     */
    getEchartsData() {
      getEchartsData()
        .then((res) => {
          const yValue = res.data.yValue;
          this.option = {
            xAxis: {
              type: "category",
              data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
            },
            yAxis: {
              type: "value",
            },
            series: [
              {
                data: Array.from(yValue),
                type: "bar",
              },
            ],
          };
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //构建图表
    getEchartData() {
      const chart = this.$refs.chart;
      if (chart) {
        const myChart = this.$echarts.init(chart, "dark");
        myChart.setOption(this.option);

        //当窗口发送变化的时候,改变图表的大小
        window.addEventListener("resize", function () {
          myChart.resize();
        });
      }
      //防止多次触发窗口发送变化
      this.$on("hook:destroyed", () => {
        window.removeEventListener("resize", function () {
          myChart.resize();
        });
      });
    },
  },
};
</script>

下一节

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值