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 サービス クイック スタート チュートリアル

推薦する

Linux md5sumコマンドの使い方

01. コマンドの概要md5sum - MD5検証コードを計算して検証するmd5sum コマンドは、...

MySQL マスタースレーブ同期メカニズムと同期遅延問題追跡プロセス

序文DBA として、仕事中に MySQL マスターとスレーブの同期遅延の問題に遭遇することがよくあり...

Nginx ポート競合を解決するトラブルシューティング方法の例

問題の説明データ転送に Nginx を使用し、フロントエンドとバックエンドが分離された Spring...

MYSQL スロークエリとログ設定とテスト

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

MySQL の起動オプションとシステム変数の例の詳細な説明

目次ブートオプションコマンドラインパラメータの長い形式と短い形式設定ファイル構成グループシステム変数...

Linux の高性能ネットワーク IO と Reactor モデルの分析

目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...

Linux でのログ サーバーの設定に関するグラフィック チュートリアル

序文この記事では、Linux 構成ログ サーバーに関する関連コンテンツを主に紹介し、参考と学習のため...

古典的なスネークゲームの JavaScript 実装

この記事では、古典的なスネークゲームを実装するためのJavaScriptの具体的なコードを参考までに...

SMS送信のカウントダウンを実装するJavaScript

この記事では、SMS送信のカウントダウンを実装するためのJavaScriptの具体的なコードを参考ま...

Ubuntu で VIM を C++ 開発エディタとして設定する

1. 設定ファイルをユーザー環境にコピーし、新しい.vimフォルダを作成し、バンドルサブフォルダを作...

jsは多次元配列を1次元配列に変換し、それを並べ替えます

目次まず多次元配列の平坦化についてお話しましょう方法 1: flat()方法 2: 空の文字列を連結...

Vue のローカルコンポーネントの紹介

Vueでは、ローカルコンポーネントを自分で定義(登録)することができます。コンポーネント名を定義する...

WeChatミニプログラムページ間の価値転送を実装する方法の例

ミニプログラムページ間で値を渡すみなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。...

MySQL Server 8.0.3 のインストールと設定方法のグラフィックチュートリアル

この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...

フロントエンドJavaScript ES6の詳細について

目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...