Vueのシンプルストアの詳しい説明

Vueのシンプルストアの詳しい説明

Vue におけるストアの最も単純な応用はグローバル ストレージです。

ここでは、相互にジャンプするために 2 つのコンポーネント ( Helloworld.vuetwopage.vue ) を使用します。前者はストアにデータを格納するために使用され、後者はストアからデータを取得するために使用されます。

まず、vuex をインストールする必要があります: npm install vuex --save ;

ジャンプする必要があるので、ルーターをインストールする必要があります: npm install vue-router --save

新しいストア フォルダーを作成し、その中に新しいモジュール フォルダー、 getters.jsindex.jsを作成します。

モジュール内にmystate.jsを作成する

ここに画像の説明を挿入

変数 msg を mystate に配置します。

定数状態 = {
    メッセージ: 「これが私のステータスです」
}
エクスポートデフォルト{
    州
}

ゲッターは、操作する変数のキーと値のペアを保持します。

const ゲッター = {
    メッセージ:状態 => state.mystate.msg、
}
デフォルトのゲッターをエクスポートする

インデックスはvuex.store設定と作成に使用されます。

'vue' から Vue をインポートします
'vuex' から Vuex をインポートします
'./getters' からゲッターをインポートします
Vue.use(Vuex)
// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)
// モジュールファイル内のすべての vuex モジュールが自動的に必要になります // `import app from './modules/app'` は必要ありません
// モジュールファイルからすべての vuex モジュールを自動的に要求します
const モジュール = modulesFiles.keys().reduce((モジュール、モジュールパス) => {
  // './app.js' を 'app' に設定
  定数 moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  定数値 = modulesFiles(modulePath)
  モジュール[モジュール名] = 値.default
  リターンモジュール
}, {})
定数ストア = 新しい Vuex.Store({
  モジュール、
  ゲッター、
})
デフォルトストアをエクスポート

main.jsの vue インスタンスで store と router を呼び出す必要があります (2 つのページのルートについては後述します)。

'vue' から Vue をインポートします
'vuex' から Vuex をインポートします
'./getters' からゲッターをインポートします
Vue.use(Vuex)
// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)
// モジュールファイル内のすべての vuex モジュールが自動的に必要になります // `import app from './modules/app'` は必要ありません
// モジュールファイルからすべての vuex モジュールを自動的に要求します
const モジュール = modulesFiles.keys().reduce((モジュール、モジュールパス) => {
  // './app.js' を 'app' に設定
  定数 moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  定数値 = modulesFiles(modulePath)
  モジュール[モジュール名] = 値.default
  リターンモジュール
}, {})
定数ストア = 新しい Vuex.Store({
  モジュール、
  ゲッター、
})
デフォルトストアをエクスポート

routerの下のindex.jsに 2 つのルートを設定します。

'vue' から Vue をインポートします
'vuex' から Vuex をインポートします
'./getters' からゲッターをインポートします
Vue.use(Vuex)
// https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)
// モジュールファイル内のすべての vuex モジュールが自動的に必要になります // `import app from './modules/app'` は必要ありません
// モジュールファイルからすべての vuex モジュールを自動的に要求します
const モジュール = modulesFiles.keys().reduce((モジュール、モジュールパス) => {
  // './app.js' を 'app' に設定
  定数 moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  定数値 = modulesFiles(modulePath)
  モジュール[モジュール名] = 値.default
  リターンモジュール
}, {})
定数ストア = 新しい Vuex.Store({
  モジュール、
  ゲッター、
})
デフォルトストアをエクスポート

App.vue のルート ビューを使用します。

<テンプレート>
  <div id="アプリ">
   <ルータービュー></ルータービュー>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: 'アプリ'
}
</スクリプト>
<スタイル>
#アプリ {
  フォントファミリ: 'Avenir'、Helvetica、Arial、sans-serif;
  -webkit-font-smoothing: アンチエイリアス;
  -moz-osx-font-smoothing: グレースケール;
  テキスト配置: 中央;
  色: #2c3e50;
  上マージン: 60px;
}
</スタイル>

最後に、 HelloWorld.vueという 2 つのページ コンポーネントがあります。

msg の双方向バインディングと監視。msg の新しい値をグローバル変数に格納します。

トリガーを監視するメソッドは setstate です。

sessionStorage.setItem('msg', value)は、 getters.jsに格納されているキーと値のペアである msg というキーに対応する値に value の値を格納するために使用されます。

<テンプレート>
  <div class="hello">
    <img src="../assets/logo.png" />
    <br />
    <input v-model="msg"/>
    <h2>{{ メッセージ }}</h2>
    <router-link to="/two">2ページ目へ移動します</router-link>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: "HelloWorld",
  データ() {
    戻る {
      メッセージ: 「新しい Vue プロジェクトへようこそ」
    };
  },
  メソッド: {
    setstate(値) {
      sessionStorage.setItem('msg', 値);
    },
  },
  時計:
    メッセージ(新しい名前、古い名前) {
      this.setstate(新しい名前);
    },
  },
};
</スクリプト>
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
{
  色: #42b983;
}
</スタイル>

2 番目のページ コンポーネントtwopage.vueでは、保存されたメッセージを取り出す必要があります。

sessionStorage.getItem('msg') msg キーに対応する値を取得します。

<テンプレート>
  <div>
    これは2ページ目です<h2>{{ msg }}</h2>
    <router-link to="/">戻りたい</router-link>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      メッセージ: "",
    };
  },
  メソッド: {
    メッセージを設定する() {
        this.msg = sessionStorage.getItem('msg');
    },
  },
  作成された(){
      this.setmsg()
  }
};
</スクリプト>

ディレクトリ構造:

ここに画像の説明を挿入

デモ:

初期状態:

ここに画像の説明を挿入

入力ボックスの内容を変更するには:

ここに画像の説明を挿入

2ページ目へ移動:

ここに画像の説明を挿入

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • vue.js 状態管理における vuex のストアの使用の詳細な説明
  • Vue コンポーネントの $store で定義された変数の変更を監視する詳細な説明
  • vuex のデータ転送の 2 つの方法とその解決策について詳しく説明します。$store undefined
  • Vuex での Store のモジュール分割の詳細な説明
  • vuexストアのソースコードの詳細な説明

<<:  MySQL で MHA アーキテクチャのデプロイメントを構築する手順

>>:  Nginx サービス クイック スタート チュートリアル

推薦する

テキストまたはJSONを返すようにnginxを設定する方法

特定のインターフェースをリクエストするときに、指定されたテキスト文字列または JSON 文字列を返す...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

MySql マスタースレーブレプリケーションメカニズムの包括的な分析

目次マスタースレーブレプリケーションメカニズム非同期レプリケーション準同期レプリケーションマスタース...

Python Flask WeChat アプレットのログインプロセスとログイン API 実装コード

1. まずは効果を見てみましょうインターフェース要求によって返されるデータ: 2. 公式ログインフロ...

MySQL Installer Community 5.7.16 インストール詳細チュートリアル

この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

kindとDockerを使用してローカルKubernetes環境を起動する

導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...

Linux SSHポートを転送する3つの方法

ssh は私が最も頻繁に使用する 2 つのコマンドライン ツールのうちの 1 つです (もう 1 つ...

js オプション連鎖演算子の使用

序文オプションの連鎖演算子 (?.) を使用すると、チェーン内の各参照が有効であることを明示的に検証...

複数のネットワークカードを備えた Linux システムでのルーティング構成の詳細な説明

Linux でのルーティング設定コマンド1. ホストルーティングを追加する ルートを追加 -host...

MySqlのインストールとログインの詳細な説明

LinuxにMySQLがすでにインストールされているかどうかを確認する sudo service m...

Dockerfile における ENV 命令の具体的な使用法の詳細な説明

1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...

MySQL ステートメントの実行順序と書き込み順序の例の分析

選択ステートメントの完全な構文は次のとおりです。 選択 DISTINCT <選択リスト>...

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

MySQL 5.7 に組み込まれているストレス テストの mysqlslap コマンドと構文の詳細な説明

序文mysqlslap は、MySQL サーバーへのクライアント負荷をシミュレートし、各ステージの時...