问题产生:页面不等服务端响应就已经渲染图表
解决思路:1.创建一个数组从接口获取到图表的数据,2.把option单独放到一个方法中,3.监听接收数据的数组,发生变化时调用存放option的方法(如果不懂可以看下下面的代码示例),如果还是不行,你可以试试定时器
- <template>
- <div class="echatBox">
- <Echarts
- :myOption="state.chartOpt"
- :myStyle="{ width: '100%', height: '200px' }"
- ></Echarts>
- </div>
- </template>
-
- <script setup>
- import { ref, onMounted, reactive, watch } from "vue";
- import { getData } from "@/api/bridge";
-
- const state = reactive({
- chartOpt: {},
- echartList: []
- });
-
- watch(
- () => state.echartList,
- (v) => {
- if (v) {
- echartData();
- }
- }
- );
-
- // 获取数据
- const getListFun = (sizeVal) => {
- const data = {
- // 需要上传的参数
- };
- getData(data).then((res) => {
- state.echartList= res.data
- });
- };
-
- // 图标配置
- const echartData = () => {
- state.chartOpt = {
- tooltip: {},
- xAxis: {},
- yAxis: {},
- series: [],
- };
- };
-
- onMounted(() => {
- getListFun();
- });
- </script>