Vueはメニューナビゲーションを実装するためにelement-uiを使用します

Vueはメニューナビゲーションを実装するためにelement-uiを使用します

この記事では、Element-uiを使用してメニューナビゲーションを実装するVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

レンダリング

カタログのスクリーンショット

vue-routerとelement-uiをインストールする

vue-routeは公式のルーティングナビゲーションであり、element-uiはEle.meによってカプセル化されたvueベースのコンポーネントライブラリです。

npm インストール vue-router --save
npm をインストールします。

ESLintチェックをオフにする

新しい設定ファイル src/vue.config.js を追加します。

モジュール.エクスポート = {
    保存時にlint: 偽
}

src/main.js

vue-router と element-ui を main.js にインポートします。
映画と小説の 2 つのページ コンポーネントを作成します。
ルート マップを定義します。
ルートを h5 モードに変更し、醜い # 記号を削除します。

'vue' から Vue をインポートします
'./App.vue' からアプリをインポートします。

'vue-router' から VueRouter をインポートします。
'element-ui' から ElementUI をインポートします。
'element-ui/lib/theme-chalk/index.css' をインポートします。


'./components/movie.vue' からムービーをインポートします。
'./components/novel.vue' から novel をインポートします。

Vue.config.productionTip = false

Vue.use(VueRouter)
Vue.js の ElementUI 要素をオーバーライドします。

定数ルート = [
  { パス: '/movie'、コンポーネント: movie },
  { パス: '/novel'、コンポーネント: novel }
]

// 3. ルーター インスタンスを作成し、`routes` 構成を渡します。// 他の構成パラメータを渡すこともできますが、今はシンプルにしておきましょう。
const ルーター = 新しい VueRouter({
  mode: 'history', //h5 mode ルート // (省略形) ルート: ルートと同等
})

新しいVue({
  レンダリング: h => h(App),
  ルーター
}).$mount('#app')

src/コメント/movie.vue

ムービーページコンポーネント

<テンプレート>
  <div>    
    映画ページ</div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: '映画' 
}
</スクリプト>


<スタイルスコープ>

</スタイル>

src/コメント/小説.vue

小説ページコンポーネント

<テンプレート>
  <div>
    小説ページ</div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: '小説'  
}
</スクリプト>
<スタイルスコープ>

</スタイル>

src/コメント/NavMenu.vue

ナビゲーション コンポーネント。ここでは element-ui メニュー コンポーネントが使用されます。 navMenuData はメニューのデータをシミュレートします。 default-active 属性は現在選択されているメニューを表し、router 属性はインデックスがルーティング パスとして自動的に使用されることを表します。

v-for ループはメニューを生成します。テンプレート タグに v-for を記述しても、必ずしも現在のテンプレートがコピーされるわけではありません。

他の人のブログを見ると、すべて default-active="$route.path" になっていますが、ここには余分な / があります。したがって、マウントされたライフサイクル中に / を削除します。

<テンプレート>
  <div id="ナビゲーションメニュー">
    <el-メニュー
      :default-active="アクティブインデックス"
      クラス="el-menu-demo"
      モード="水平"
      @select="ハンドル選択"
      ルーター
    >
      <!-- 
      <el-menu-item index="1">映画</el-menu-item>
      <el-menu-item index="2">小説</el-menu-item>
      <el-サブメニューインデックス="3">
        <template slot="title">私のワークベンチ</template>
        <el-menu-item index="3-1">オプション 1</el-menu-item>
        <el-menu-item index="3-2">オプション 2</el-menu-item>
        <el-menu-item index="3-3">オプション 3</el-menu-item>
        <el-submenu index="3-4">
          <template slot="title">オプション 4</template>
          <el-menu-item index="3-4-1">オプション 1</el-menu-item>
          <el-menu-item index="3-4-2">オプション 2</el-menu-item>
          <el-menu-item index="3-4-3">オプション 3</el-menu-item>
        </el-サブメニュー>
      </el-サブメニュー> 
      -->

      <template v-for="navMenuData 内の項目">
        <el-menu-item :index="item.index" v-if="!item.child">{{item.name}}</el-menu-item>

        <el-submenu :index="item.index" v-if="item.child">
          <テンプレート スロット="title">{{item.name}}</テンプレート>
          <template v-for="item.child 内の item2">
            <el-menu-item :index="item2.index">{{item2.name}}</el-menu-item>
          </テンプレート>
        </el-サブメニュー>
      </テンプレート>
    </el-menu>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: "NavMenu",
  データ() {
    戻る {
      アクティブインデックス: "映画",     
      ナビゲーションメニューデータ:
        { インデックス: "映画"、名前: "映画" },
        { インデックス: "小説"、名前: "小説" },
        {
          インデックス: "2",
          名前:「私のワークベンチ」
          子: [{ インデックス: "2-1", 名前: "オプション 1" },{ インデックス: "2-2", 名前: "オプション 2" },{ インデックス: "2-3", 名前: "オプション 3" }]
        },
       
      ]
    };
  },
  メソッド: {
    ハンドル選択(キー、キーパス) {
      console.log(キー、キーパス);
    }
  },
  マウントされた(){         
      コンソールログ(this.activeIndex)        
      console.log(this.$route.path)      
      this.activeIndex = this.$route.path.substring(1、this.$route.path.length);     

  }
};
</スクリプト>

<スタイルスコープ>
</スタイル>

src/App.vue

ここでは element-ui コンテナ レイアウトが使用され、自分で作成した NavMenu メニュー コンポーネントが導入されています。

<テンプレート>
  <div id="アプリ">
    <el-コンテナ>
      <el-ヘッダー>
        <ナビゲーションメニュー></ナビゲーションメニュー>
      </el-header>
      <メイン>
         <router-view></router-view> <!--ルート終了-->
      </el-main>
      <el-footer>フッター</el-footer>
    </el-コンテナ>
  </div>
</テンプレート>

<スクリプト>
「./components/NavMenu.vue」からNavMenuをインポートします。

エクスポートデフォルト{
  名前:「アプリ」、
  コンポーネント:
    ナビゲーションメニュー
  }
};
</スクリプト>

<スタイルスコープ>
.el-ヘッダー、
.el-フッター{
  背景色: #b3c0d1;
  色: #333;
  テキスト配置: 中央;
  高さ: 100px;
  パディング: 0px;
}

.el-main {
  背景色: #e9eef3;
  色: #333;
  テキスト配置: 中央;
  行の高さ: 160px;
}

</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 現在の選択内容を保持するには、element-uiのel-menuナビゲーションを使用して選択後にページを更新します。
  • element-ui の el-select のデフォルト選択の問題の詳細な説明
  • 要素UIのメニューのデフォルト選択について default-active

<<:  JavaベースのMySQLバックアップテーブル操作

>>:  Centos7 でスーパーバイザ デーモンをインストールして設定する方法

推薦する

レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...

HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

少なくとも 5 冊のベストセラー書籍の順序なしリストを含む HTML ページを作成します。各書籍の前...

MySQL ストアド関数(カスタム関数)の定義と使用方法の詳細な説明

ストアド関数ストアド関数とは: SQL コードの一部をカプセル化し、特定の関数を完了して、結果を返し...

MySQL で group by を使用すると常にエラー 1055 が発生します (推奨)

MySQL で group by を使用すると常にエラー 1055 が発生するため、原因を確認する...

Dockerコンテナでアプリケーションサービスを自動的に起動する方法の例

コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...

Reactホームページの読み込みが遅い問題のパフォーマンス最適化事例の詳細な説明

しばらくReactを勉強した後、実践してみたいと思います。そこで、個人のブログのウェブサイトを再構築...

表に斜めヘッダー効果を出す5つの方法

誰もがテーブルをよく知っているはずです。コード内でよく見かけます。テーブルにスラッシュ ヘッダーを追...

個人的な意見: デザインについて語る

<br />最も実用的なものを選んで話しましょう。まず、勤務先の都市を慎重に選ぶ必要があ...

Linux で ss コマンドと zabbix を組み合わせてソケットを監視する方法の詳細な説明

目次序文1. ssコマンド2. Zabbix監視マシンの全体的なソケットステータス2.1. スクリプ...

WebStormはVue3統合APIのソリューションを正しく識別できません

1 問題の説明Vue3 の統合 API は、defineComponent やその他の関数が認識でき...

MySQLファイルストレージの詳細な説明

ファイルシステムとは何かInnoDB や MyIASM などのストレージ エンジンはテーブルをディス...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...