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

推薦する

MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要

目次MySQL スレーブ ライブラリ Seconds_Behind_Master 遅延の概要1. 遅...

JavaScript での正規表現の使用について詳しく学ぶ

目次1. 正規表現とは何か1. 正規表現の特徴2. 正規表現の使用2. 正規表現における特殊文字1....

React Stateの状態とライフサイクルの実装方法

1. コンポーネントの実装方法:組件名稱首字母必須大寫1. JS関数を通じてコン​​ポーネントを実装...

Vue で $props、$attrs、$listeners を使用する方法の詳細な説明

目次背景1. 文書の説明2. 特定の用途結論背景ここで、状況について説明しましょう。親コンポーネント...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

nginxディレクトリパスをリダイレクトする方法

ドメイン名に続くパスがデフォルトの Web ディレクトリではなく、ローカル ディスク上の他のディレク...

...

Visual Studio Code + Reactをベースに開発環境を構築するプロセス

開発環境ウィンドウ開発ツール Visual Studio Codeノードのインストールとnpm Wi...

LinuxサーバーにGRUBをインストールする手順

Linux サーバーに GRUB をインストールする方法クラウド移行ツールを使用して、CentOS ...

Linux のよく使うコマンドの使い方を詳しく解説(第 2 回)———— テキストエディタのコマンド vi/vim

vi/vim の紹介どちらもマルチモード エディターです。違いは、vim が vi のアップグレー...

MySQL の冗長インデックスと重複インデックスの詳細な説明

MySQL では、同じ列に複数のインデックスを作成できます。意図的であるかどうかにかかわらず、MyS...

Pythonの関数知識についての簡単な説明

目次関数パラメータの2つの主要なカテゴリ位置パラメータ可変長パラメータ名前空間要約する関数パラメータ...

光沢のある輝くウェブサイトデザインの感動的なデザイン例

このコレクションには、あなたのデザインアイデアにインスピレーションを与える、輝いて光沢のある、優れた...

Dockerイメージをインポートおよびエクスポートする方法

この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...

Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法

少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...