VUE3 の echarts チャートは、レスポンシブ echarts になり、レスポンシブなレイアウトを実現します。

  • シングルチャート
    
         
         
          
          
    1. //dom ノードを取得する
    2. var myChart = echarts. init ( document . getElementById ( 'main' ));
    3. // レンダードム
    4. マイチャート。setOption ({...})
    5. //レスポンシブ
    6. ウィンドウ onresize =関数( ) {
    7. マイチャート。サイズ変更();
    8. }

    注:このメソッドは 1 つのチャートに対してのみ使用できます。ページに複数のチャートがある場合、最後のチャートに対してのみ有効です。vue で使用する場合、複数のチャートを使用することがよくあります.異なるチャートを複数のコンポーネントに分割しますが、それでも 1 つのチャートに対してのみ機能します。したがって、最も効果的な方法は、グローバルにマウントすることです。

  • 複数のグラフ (一般的なアプローチ)

        グローバルにマウント:


   
   
    
    
  1. 「vue」から{ createApp }をインポートします
  2. 「./App.vue」から アプリ をインポート
  3. 「./router/index」からルーターをインポートします
  4. // element-ui を導入する
  5. 'element-plus'から ElementPlus をインポートします
  6. import 'element-plus/dist/index.css'
  7. const app = createApp (アプリ)
  8. アプリ。使用( ElementPlus )
  9. アプリ。使用(ルーター)
  10. アプリ。マウント( '#app' )
  11. //メソッド - グローバル マウント
  12. アプリ。構成グローバルプロパティ$echartsResize =関数( ref:any ){
  13. ウィンドウ addEventListener ( 'サイズ変更' ,関数( ) {
  14. 参照。リサイズ()
  15. }))
  16. }
  17. // プロパティ -- グローバル マウント
  18. アプリ。構成グローバルプロパティ$axios =アクシオス;
  19. app.config.globalProperties . $Test = "私はグローバルにいます" ;

コンポーネントで次を使用します。

        コンポーネント インスタンスでは、 vue からgetCurrentInstanceを導入し、getCurrentInstance を介してプロキシを取得する必要があります。その後、使用するためにグローバルにマウントされたインスタンスを取得できます。


   
   
    
    
  1. <スクリプト設定>
  2. import { onMounted } from 'vue' ;
  3. import * as echarts from 'echarts' ;
  4. //getCurrentInstance を導入する
  5. import { getCurrentInstance } from 'vue'
  6. const { プロキシ } = getCurrentInstance ();
  7. const echartInit = (データ) => {
  8. // 準備された dom に基づいて、echarts インスタンスを初期化します
  9. var myChart = echarts. init ( document . getElementById ( 'main' ));
  10. // チャートを描く
  11. マイチャート。setOption ({...});
  12. // リアクティブ -- 使用
  13. proxy.$echartsResize(myChart)
  14. }
  15. onMounted ( async () => {
  16. キャスト初期化 ()
  17. }))
  18. </script>

  • シングルチャート
    
         
         
        
        
    1. //dom ノードを取得する
    2. var myChart = echarts. init ( document . getElementById ( 'main' ));
    3. // レンダードム
    4. マイチャート。setOption ({...})
    5. //レスポンシブ
    6. ウィンドウ onresize =関数( ) {
    7. マイチャート。サイズ変更();
    8. }

    注:このメソッドは 1 つのチャートに対してのみ使用できます。ページに複数のチャートがある場合、最後のチャートに対してのみ有効です。vue で使用する場合、複数のチャートを使用することがよくあります.異なるチャートを複数のコンポーネントに分割しますが、それでも 1 つのチャートに対してのみ機能します。したがって、最も効果的な方法は、グローバルにマウントすることです。

  • 複数のグラフ (一般的なアプローチ)

        グローバルにマウント:


   
   
  
  
  1. 「vue」から{ createApp }をインポートします
  2. 「./App.vue」から アプリ をインポート
  3. 「./router/index」からルーターをインポートします
  4. // element-ui を導入する
  5. 'element-plus'から ElementPlus をインポートします
  6. import 'element-plus/dist/index.css'
  7. const app = createApp (アプリ)
  8. アプリ。使用( ElementPlus )
  9. アプリ。使用(ルーター)
  10. アプリ。マウント( '#app' )
  11. //メソッド - グローバル マウント
  12. アプリ。構成グローバルプロパティ$echartsResize =関数( ref:any ){
  13. ウィンドウ addEventListener ( 'サイズ変更' ,関数( ) {
  14. 参照。リサイズ()
  15. }))
  16. }
  17. // プロパティ -- グローバル マウント
  18. アプリ。構成グローバルプロパティ$axios =アクシオス;
  19. app.config.globalProperties . $Test = "私はグローバルにいます" ;

コンポーネントで次を使用します。

        コンポーネント インスタンスでは、 vue からgetCurrentInstanceを導入し、getCurrentInstance を介してプロキシを取得する必要があります。その後、使用するためにグローバルにマウントされたインスタンスを取得できます。


   
   
  
  
  1. <スクリプト設定>
  2. import { onMounted } from 'vue' ;
  3. import * as echarts from 'echarts' ;
  4. //getCurrentInstance を導入する
  5. import { getCurrentInstance } from 'vue'
  6. const { プロキシ } = getCurrentInstance ();
  7. const echartInit = (データ) => {
  8. // 準備された dom に基づいて、echarts インスタンスを初期化します
  9. var myChart = echarts. init ( document . getElementById ( 'main' ));
  10. // チャートを描く
  11. マイチャート。setOption ({...});
  12. // リアクティブ -- 使用
  13. proxy.$echartsResize(myChart)
  14. }
  15. onMounted ( async () => {
  16. キャスト初期化 ()
  17. }))
  18. </script>

おすすめ

転載: blog.csdn.net/weixin_64310738/article/details/129034399