ホームページ ウェブフロントエンド jsチュートリアル vuex state+mapState実践プロジェクトの分析

vuex state+mapState実践プロジェクトの分析

Jun 07, 2018 am 11:40 AM
state vuex

今回は、vuex state+mapState の実際のプロジェクトの分析をお届けします。vuex state+mapState の注意点は何ですか? 以下は実践的なケースです。

まず、vue cli を使用して独自の vue プロジェクトを構築します

1.npm i -g vue-cli
2.vue init webpack sell (sell はプロジェクト名です)
3. (このプロセスでは) を最後まで入力します。 vue-router、es6 構文チェックなどの依存パッケージをインストールするかどうかを尋ねられます。個人的な習慣や趣味に基づいて Y/N を選択してください)
4.npm i (これはインストール プロジェクトの依存パッケージです) )
5. npm run dev (vue プロジェクトを開始します) この時点で、ページに vue ロゴが表示されていれば、vue プロジェクトの基本的な構築が完了したことを意味します。その後、不要なコンポーネントを削除できます
6. Webpack sell はデフォルトでは vuex をインストールしないので、vuex をインストールする必要があります。コマンドラインで ctrl+c を 2 回押してサーバーを終了し、npm install vuex –save で vuex をインストールします。
7.あなたの src ディレクトリに helloVuex という名前を付けましょう (この名前はあなたがやりたいことを何でもして幸せになれます) このコンポーネントは主にメインコンテナとして使用され、コンテンツを表示するだけです
8. 次に、好きな名前の新しいコンポーネントを作成します (私はそうします)ここでは表示コンポーネントと呼びます) で状態を受け入れます
9. 次に、src ディレクトリに store という名前の新しいフォルダーを作成し、test.js という名前のストアの下に js ファイルを作成します (ここでのストアはフロントです)。状態管理には vuex を使用します。Store は vuex のコアであるため、store という名前を付けます。src ディレクトリに新しい store ファイルを作成し、store ディレクトリに新しい test.js ファイルを作成します。 。 vuex を使用する前に、vue にそれを使用するように指示する必要があることがわかります。Vue.use(Vuex); ここで管理する変数の数は 1 つだけなので、ストア オブジェクトを作成するときに、パラメーターをコンストラクターに渡すだけです。状態で 1 カウント、0 に初期化されます。

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
 state: {
 count: 0
 }
export default store
ログイン後にコピー

これで、すべてのステータス、つまり変数が test.js に配置されました。では、コンポーネントはどのようにしてステータス変更値を取得できるでしょうか?ここでの操作手順は 2 つあります

1. Vue はストア オブジェクトをルート インスタンスに注入する注入メカニズムを提供します。 vue のルート インスタンスは新しい Vue コンストラクターであり、すべてのサブコンポーネントで this.$store がストア オブジェクトを指します。 test.jsではストアをエクスポートしており、new Vue()がmain.js内に公開されているので、main.jsにストアを直接導入して注入することができます。

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/test'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store,
 template: '<App/>',
 components: { App }
})
ログイン後にコピー

2. 子コンポーネントで、計算された属性を使用します。計算された属性は、依存関係に基づいて自動的に更新されます。したがって、ストア内の状態が変化する限り、自動的に変化します。 display.vue に次の変更を加えます。サブコンポーネントの This.$store はストア オブジェクトを指します。 test.js のカウントを 8 に変更すると、ページ上では 8 になります。

<template>
 <p>
  <h3>Count is {{count}}</h3>
 </p>
</template>
<script>
 export default {
  computed: {
   count () {
    return this.$store.state.count 
   }
  }
 }
</script>
ログイン後にコピー

3. ステータス値は計算された属性を通じて取得できますが、コンポーネント内の各属性 (カウントなど) は関数です。10 個ある場合、これを返すには 10 個の関数を記述する必要があります。 . $store.state、あまり便利ではありません。 Vue は、状態をコンポーネントに直接マップする、mapState 関数を提供します。

もちろん、使用する前にmapStateを導入する必要があります。これは、オブジェクトまたは配列を受け入れる 2 つの方法で使用できます。まだdisplay.vueコンポーネントの下にあります。

オブジェクトの使用法は次のとおりです:

<script>
 import {mapState} from "vuex"; // 引入mapState 
 export default {
      // 下面这两种写法都可以
  computed: mapState({
   count: state => state.count // 组件内的每一个属性函数都会获得一个默认参数state, 然后通过state 直接获取它的属性更简洁  
   count: 'count'         // 'count' 直接映射到state 对象中的count, 它相当于 this.$store.state.count,
  })
 }
</script>
ログイン後にコピー

配列メソッドは次のとおりです:

<script>
 import {mapState} from "vuex";
 export default {
  computed: mapState([ // 数组
   "count"
  ])
 }
</script>
ログイン後にコピー

4, 最後に質問が 1 つあります。コンポーネント内にも計算された属性がある場合はどうなりますか?それはmapStateに属しません。次に、mapState 関数で生成されたオブジェクトをオブジェクト セグメンテーションを使用して 1 つずつ分割します。最初と同様に、計算された属性を 1 つずつ列挙します。10 個の属性がある場合、10 個の関数を記述します。

... es6 では分割に使用されますが、分割できるのは配列のみです。 ECMAScript stage-3 でオブジェクトを分割できるため、この時点では babel-stage-3 も使用されます。インストールが完了したら、忘れずに追加してください。 babel in babelrc 設定ファイルに、stage-3,

と記述します。それ以外の場合は、常にエラーが報告されます。ページに p タグを追加して、コンポーネントの計算の習熟度を示します

babelrc

{
 "presets": [
 ["env", {
  "modules": false,
  "targets": {
  "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
  }
 }],
 "stage-3"
 ],
 "plugins": ["transform-runtime"],
 "env": {
 "test": {
  "presets": ["env", "stage-3"],
  "plugins": ["istanbul"]
 }
 }
}
ログイン後にコピー

display.vue コンポーネントの変更後

<template>
 <p>
  <h3>Count is {{count}}</h3>
  <p>组件自己的内部计算属性 {{ localComputed }}</p>
 </p>
</template>
<script>
 import {mapState} from "vuex";
 export default {
  computed: {
   localComputed () {
    return this.count + 10;
   },
   ...mapState({
    count: "count"
   })
  } 
 }
</script>
ログイン後にコピー

効果を確認するには、test.js の state.count を 10 に変更します

VuexでのmapStateの使い方を見てみましょう

今日はVuexを使っていて、私の無知とも言える落とし穴に遭遇しました。私のコードにエラーがあります。本当に雷鳴るよ~~~~~~

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import actions from './action'
import getters from './getters'
Vue.use(Vuex)
const state = {
 userInfo: { phone: 111 }, //用户信息
 orderList: [{ orderno: '1111' }], //订单列表
 orderDetail: null, //订单产品详情
 login: false, //是否登录
}
export default new Vuex.Store({
 state,
 getters,
 actions,
 mutations,
})
computed: {
   ...mapState([
    'orderList',
    'login'
   ]),
  }, 
  mounted(){ 
   console.log(typeof orderList); ==>undefind
   console.log(typeof this.orderList)==>object
  }
ログイン後にコピー

mapState通过扩展运算符将store.state.orderList 映射this.orderList  这个this 很重要,这个映射直接映射到当前Vue的this对象上。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何操作Vue做出proxy代理

使用jquery获取上传文件具体内容

以上がvuex state+mapState実践プロジェクトの分析の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Vuex を使用して Vue2.x のグローバル状態を管理するためのベスト プラクティス Vuex を使用して Vue2.x のグローバル状態を管理するためのベスト プラクティス Jun 09, 2023 pm 04:07 PM

Vue2.x は現在最も人気のあるフロントエンド フレームワークの 1 つであり、グローバル状態を管理するためのソリューションとして Vuex を提供します。 Vuex を使用すると、状態管理がより明確になり、保守が容易になります。開発者が Vuex をより適切に使用し、コードの品質を向上させるために、Vuex のベスト プラクティスを以下に紹介します。 1. モジュラー組織状態の使用 Vuex は単一の状態ツリーを使用してアプリケーションのすべての状態を管理し、コンポーネントから状態を抽出することで、状態管理をより明確かつ理解しやすくします。多くの状態を持つアプリケーションではモジュールを使用する必要があります

Vue3 で Vuex を使用する方法 Vue3 で Vuex を使用する方法 May 14, 2023 pm 08:28 PM

Vuexは何をするのですか? Vue 公式: 状態管理ツール 状態管理とは? 複数のコンポーネント間で共有する必要があり、1 つの変更ですべてが変更される、応答性の高い状態。たとえば、グローバルに使用されるステータス情報: ユーザーのログイン ステータス、ユーザー名、地理的位置情報、ショッピング カート内の商品など。現時点では、グローバル ステータス管理のためのこのようなツールが必要であり、Vuex はそのようなツールです。単一ページの状態管理 ビュー –> アクション –> 状態 ビュー レイヤ (ビュー) は、アクション (アクション) をトリガーして状態 (state) を変更し、ビュー レイヤ (ビュー) vuex (Vue3.

Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 変更ハンドラーの外で vuex ストアの状態を変更しません。」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 変更ハンドラーの外で vuex ストアの状態を変更しません。」という問題を解決するにはどうすればよいですか? Jun 24, 2023 pm 07:04 PM

Vue アプリケーションでは、vuex の使用が一般的な状態管理方法です。ただし、vuex を使用すると、「Error:[vuex]donotmutatevuexstorestateoutsidemutationhandlers」というエラー メッセージが表示されることがあります。このエラー メッセージは何を意味しますか?このエラー メッセージが表示されるのはなぜですか?このエラーを修正するにはどうすればよいですか?この記事では、この問題について詳しく説明します。エラーメッセージには次の内容が含まれます

vuex の実装原則について詳しく見る vuex の実装原則について詳しく見る Mar 20, 2023 pm 06:14 PM

面接でvuexの実装原理について聞かれたらどう答えるべきでしょうか? vuex の実装原理については以下の記事で詳しく解説していますので、お役に立てれば幸いです。

Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 不明なアクション タイプ: xxx」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用するときに「エラー: [vuex] 不明なアクション タイプ: xxx」という問題を解決するにはどうすればよいですか? Jun 25, 2023 pm 12:09 PM

Vue.js プロジェクトでは、vuex は非常に便利な状態管理ツールです。これは、複数のコンポーネント間で状態を共有するのに役立ち、状態の変更を管理する信頼性の高い方法を提供します。ただし、vuex を使用すると、「エラー:[vuex]unknownact​​iontype:xxx」というエラーが発生することがあります。この記事では、このエラーの原因と解決策について説明します。 1. エラーの原因 vuex を使用する場合、いくつかのアクションと mu を定義する必要があります。

Vue アプリケーションで vuex を使用する際に「TypeError: Unknown のプロパティ 'xxx' を読み取れません」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用する際に「TypeError: Unknown のプロパティ 'xxx' を読み取れません」という問題を解決するにはどうすればよいですか? Aug 18, 2023 pm 09:24 PM

Vue アプリケーションで Vuex を使用することは、非常に一般的な操作です。ただし、Vuex を使用しているときに、「TypeError: Cannotreadproperty'xxx'ofunknown」というエラー メッセージが表示されることがあります。このエラー メッセージは、未定義のプロパティ "xxx" を読み取れず、プログラム エラーが発生することを意味します。この問題の理由は実は非常に明白で、Vuex の特定の属性を呼び出すときに、この属性が正しく設定されていないことが原因です。

vue3+vite で vuex を使用する方法 vue3+vite で vuex を使用する方法 Jun 03, 2023 am 09:10 AM

具体的な手順: 1. vuex (vue3 は 4.0 以降を推奨) pnpmivuex-S2 をインストールし、main.js で importstorefrom'@/store'//hx-app のグローバル構成を構成します constapp=createApp(App)app.use(store) 3新しい関連フォルダーとファイルを作成します。ここでは、異なる vuex 内に複数の js を構成します。vuex モジュールを使用して、異なるページとファイルを配置し、getters.jsindex.js コア ファイルを使用します。ここでは、代わりに Import.meta.glob が使用されます。の

Vue アプリケーションで vuex を使用するときに「エラー: 'xxx' はすでにデータ プロパティとして宣言されています。」という問題を解決するにはどうすればよいですか? Vue アプリケーションで vuex を使用するときに「エラー: 'xxx' はすでにデータ プロパティとして宣言されています。」という問題を解決するにはどうすればよいですか? Jun 24, 2023 pm 08:46 PM

Vue アプリケーションの開発プロセスでは、vuex を使用してアプリケーションの状態を管理することが非常に一般的です。ただし、vuex を使用する過程で、「エラー:'xxx'hasalreadybeendeclaredasadataproperty」というエラー メッセージが表示されることがあります。このエラー メッセージは不可解に思えますが、実際には Vue コンポーネントで値が繰り返し使用されていることが原因です。 . データ属性と vuex を定義する変数名

See all articles