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 の最適化: 高品質の SQL 文を書く方法

序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...

vue-routeルーティング管理のインストールと設定方法

導入Vue Router 、 Vue.jsの公式ルーティング マネージャーです。 Vue.jsのコア...

ウェブサイトのユーザビリティを向上させる10のヒント

企業の Web サイト、個人のブログ、ショッピング Web サイト、ゲーム Web サイトなど、どの...

Ubuntu 20.04にSogou入力方式をインストールする詳細な手順

1. Fcitx入力フレームワークをインストールする関連する依存ライブラリとフレームワークは自動的に...

実行中の時計を実装するための純粋な CSS3 コード

操作効果コードの実装html <div id="ウォッチ"> <...

VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

1. Workstationで仮想マシンのハードウェアバージョンを変更するWorkstation ...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

MySQL 整合性制約の例の詳細な説明

この記事では、MySQL の整合性制約について説明します。ご参考までに、詳細は以下の通りです。メイン...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

MySQLデータのバックアップ方法の選択と考え方

目次1. rsync、cpでファイルをコピーする2. xxxをoutfile構文に選択する3. 遅延...

nginx を使用して 1 つのドメイン名で複数の Laravel プロジェクトを構成する方法の例

背景会社のサブプロジェクトが増えるにつれて、さまざまなサイズのプロジェクトが10個以上になります(バ...

Vue3とElectronを使ったデスクトップアプリケーションの詳しい説明

目次Vue CLIはVueプロジェクトを構築しますVue プロジェクトをマークダウン エディターに変...

MySQL マスタースレーブレプリケーションプロセスの詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスター データベースの DDL および DML...

MySQLインデックスを追加する3つの原則を簡単に理解する

1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...

iptables の再起動後に Docker の iptables ルールの完全なプロセスが失われる

原因と結果1. ansibleコマンドを使用してジャンプサーバー上のマシンBをテストすると、次のエラ...