VueCharts.vue 764 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup lang="ts">
  2. import {onMounted, onUnmounted, ref} from "vue";
  3. import * as echarts from 'echarts'
  4. type Props = {
  5. data: string
  6. }
  7. const prop = defineProps<Props>()
  8. let instance: echarts.ECharts
  9. const dom = ref<HTMLDivElement>()
  10. const resizeHandler = () => {
  11. instance?.resize()
  12. }
  13. onMounted(()=> {
  14. let data: echarts.EChartsOption
  15. try {
  16. data = JSON.parse(decodeURIComponent(prop.data))
  17. } catch (e) {
  18. console.error(e)
  19. return
  20. }
  21. instance = echarts.init(dom.value)
  22. instance.setOption(data)
  23. window.addEventListener('resize', resizeHandler)
  24. })
  25. onUnmounted(() => {
  26. window.removeEventListener('resize', resizeHandler)
  27. instance?.dispose()
  28. })
  29. </script>
  30. <template>
  31. <div ref="dom"></div>
  32. </template>
  33. <style scoped>
  34. </style>