ホームページ ウェブフロントエンド uni-app uniappのメニューをクリックした後にメニュースタイルを変更する方法

uniappのメニューをクリックした後にメニュースタイルを変更する方法

Apr 18, 2023 pm 03:20 PM

今日は、uniappでメニューをクリックした後にメニューのスタイルを変更する機能を実装する方法を共有します。

多くのアプリケーションでは、メニューは不可欠な部分です。通常、ユーザーがメニュー項目をクリックすると、そのオプションが選択されたことが反映されるはずです。これは、オプションのスタイルを変更する必要があることを意味します。 uniapp では、これは非常に簡単に実装できます。

まず、単純なメニュー コンポーネントを作成する必要があります。ここでは、基本的なナビゲーション メニュー コンポーネントを作成します。アプリケーションのニーズに応じて変更できます。

<template>
  <div class="menu">
    <ul>
      <li @click="handleClick(0)" :class="{active: activeIndex === 0}">首页</li>
      <li @click="handleClick(1)" :class="{active: activeIndex === 1}">新闻</li>
      <li @click="handleClick(2)" :class="{active: activeIndex === 2}">关于我们</li>
      <li @click="handleClick(3)" :class="{active: activeIndex === 3}">联系我们</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeIndex: 0
    };
  },
  methods: {
    handleClick(index) {
      this.activeIndex = index;
    }
  }
};
</script>

<style scoped>
.menu ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
}
.menu ul li {
  display: inline-block;
  padding: 16px;
  cursor: pointer;
}
.menu ul li.active {
  background-color: #007bff;
  color: #fff;
}
</style>
ログイン後にコピー

上の例では、どのメニュー項目が選択されているかを追跡するために使用されるデータ プロパティ activeIndex があります。ユーザーがメニュー項目をクリックしたときに activeIndex を更新するメソッド handleClick もあります。最後に、スタイル セクションで、選択したメニュー項目のスタイルを持つ .active というクラスを定義します。

このメニュー コンポーネントをアプリケーションで使用すると、メニュー項目をクリックするとスタイルが変わることがわかります。ただし、このコンポーネントを別のページで使用すると、以前に選択したメニュー項目がデフォルト値にリセットされます。この問題を解決するには、uniapp が提供するイベント バスを使用する必要があります。

イベント バスは、アプリケーション内の任意のコンポーネントがイベントをサブスクライブおよびパブリッシュできるようにするフレームワーク レベルのイベント システムです。イベント バスを使用すると、コンポーネント間でデータと状態を共有できます。

最初に main.js でイベント バスを作成する必要があります:

import Vue from 'vue';

export const EventBus = new Vue();
ログイン後にコピー

上で述べたように、必要なのは vue をインポートして EventBus インスタンスを作成することだけです。これで、任意のコンポーネントでこれを使用して、イベントのパブリッシュとサブスクライブを行うことができます。

ここで、メニュー コンポーネントに戻り、handleClick メソッドに次のコードを追加します。

handleClick(index) {
  this.activeIndex = index;
  EventBus.$emit('menu-item-clicked', index);
}
ログイン後にコピー

ここでは、EventBus インスタンスを使用して、「menu-item-clicked」という名前の項目を公開します。イベントを呼び出して、現在選択されているメニュー項目のインデックスを渡します。

これで、アプリケーションの他のコンポーネントで、このイベントをサブスクライブし、選択されたメニュー項目を更新できるようになります。このアイデアに基づいて、次のコードをページ コンポーネントに追加しましょう。

<template>
  <div>
    <menu></menu>
    <h2>{{ pageTitle }}</h2>
    <p>{{ pageContent }}</p>
  </div>
</template>

<script>
import { EventBus } from '@/main';

export default {
  data() {
    return {
      pageTitle: '首页',
      pageContent: '欢迎来到我们的网站!'
    };
  },
  created() {
    EventBus.$on('menu-item-clicked', index => {
      switch (index) {
        case 0:
          this.pageTitle = '首页';
          this.pageContent = '欢迎来到我们的网站!';
          break;
        case 1:
          this.pageTitle = '新闻';
          this.pageContent = '这里是我们的最新消息。';
          break;
        case 2:
          this.pageTitle = '关于我们';
          this.pageContent = '了解我们的历史和团队。';
          break;
        case 3:
          this.pageTitle = '联系我们';
          this.pageContent = '与我们联系。我们非常期待与您合作!';
          break;
        default:
          this.pageTitle = '首页';
          this.pageContent = '欢迎来到我们的网站!';
      }
    });
  }
};
</script>

<style scoped>
h2 {
  margin-top: 0;
}
</style>
ログイン後にコピー

ここでは、main.js で作成された EventBus を導入し、作成されたライフ フックの "menu-item-clicked" をサブスクライブします。ページコンポーネントのイベント。このイベントが発生すると、渡されたメニュー項目インデックスを使用してページのタイトルとコンテンツを更新します。

メニューのオプションをクリックすると、ページのタイトルとコンテンツがそれに応じて変更されるのがわかります。

要約すると、uniappにメニューをクリックした後にスタイルを変更する機能を実装しました。基本的なナビゲーション メニュー コンポーネントを使用し、イベント バスを使用して、メニュー項目がクリックされたときに「menu-item-clicked」というイベントを発行します。どのコンポーネントもこのイベントをサブスクライブし、選択されたメニュー項目を更新できます。

以上がuniappのメニューをクリックした後にメニュースタイルを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

UNIAPPアプリケーションで実行できるさまざまなタイプのテストは何ですか? UNIAPPアプリケーションで実行できるさまざまなタイプのテストは何ですか? Mar 27, 2025 pm 04:59 PM

この記事では、ユニット、統合、機能、UI/UX、パフォーマンス、クロスプラットフォーム、セキュリティテストなど、UNIAPPアプリケーションのさまざまなテストタイプについて説明します。また、クロスプラットフォームの互換性を確保し、JESのようなツールを推奨しています

Uniappアプリケーションパッケージのサイズをどのように削減できますか? Uniappアプリケーションパッケージのサイズをどのように削減できますか? Mar 27, 2025 pm 04:45 PM

この記事では、コードの最適化、リソース管理、コード分割や怠zyなロードなどの手法に焦点を当てたUniappパッケージサイズを削減する戦略について説明します。

UNIAPP開発に利用できるデバッグツールは何ですか? UNIAPP開発に利用できるデバッグツールは何ですか? Mar 27, 2025 pm 05:05 PM

この記事では、Hbuilderx、Wechat開発者ツール、Chrome Devtoolsなどのツールに焦点を当てたUniapp開発のためのデバッグツールとベストプラクティスについて説明します。

怠zyなロードを使用してパフォーマンスを向上させるにはどうすればよいですか? 怠zyなロードを使用してパフォーマンスを向上させるにはどうすればよいですか? Mar 27, 2025 pm 04:47 PM

怠zyな読み込みは、サイトのパフォーマンスを改善し、負荷時間とデータの使用量を削減するための非批判的なリソースを扱います。重要なプラクティスには、重要なコンテンツの優先順位付けや効率的なAPIの使用が含まれます。

UniappのWebパフォーマンスのために画像を最適化するにはどうすればよいですか? UniappのWebパフォーマンスのために画像を最適化するにはどうすればよいですか? Mar 27, 2025 pm 04:50 PM

この記事では、圧縮、レスポンシブデザイン、怠zyなロード、キャッシング、およびWebP形式の使用を通じて、Webパフォーマンスを向上させるために、Uniappの画像の最適化について説明します。

Uniappはグローバルな構成とスタイリングをどのように処理しますか? Uniappはグローバルな構成とスタイリングをどのように処理しますか? Mar 25, 2025 pm 02:20 PM

Uniappは、Manifest.jsonを介してグローバル構成を管理し、app.vueまたはapp.scssを介してスタイリングを管理し、変数とミキシンにuni.scssを使用します。ベストプラクティスには、SCS、モジュラースタイル、レスポンシブデザインの使用が含まれます。

Uniappで複雑なデータ構造を管理するための一般的なパターンは何ですか? Uniappで複雑なデータ構造を管理するための一般的なパターンは何ですか? Mar 25, 2025 pm 02:31 PM

この記事では、Uniappの複雑なデータ構造の管理について説明し、Singleton、Observer、Factory、Stateなどのパターンに焦点を当て、VuexおよびVue 3 Composition APIを使用してデータ状態の変更を処理するための戦略について説明します。

Uniappの計算プロパティとは何ですか?それらはどのように使用されていますか? Uniappの計算プロパティとは何ですか?それらはどのように使用されていますか? Mar 25, 2025 pm 02:23 PM

Vue.jsから派生したUniappの計算プロパティは、リアクティブで再利用可能な、最適化されたデータ処理を提供することにより、開発を強化します。依存関係が変更されたときに自動的に更新され、パフォーマンスの利点を提供し、国家管理を簡素化します

See all articles