目次
1.vuex とは" >1.vuex とは
mapState
ホームページ ウェブフロントエンド Vue.js 集中状態管理 Vuex の使用に関する簡単な分析

集中状態管理 Vuex の使用に関する簡単な分析

Feb 03, 2023 pm 06:19 PM
vuex

一元的な状態管理で Vuex を使用するにはどうすればよいですか?次の記事では、vuex について理解し、vuex の使用方法について簡単に説明します。

集中状態管理 Vuex の使用に関する簡単な分析

1.vuex とは

Vue での集中状態管理の専用実装 Vue プラグ-in は、Vue アプリケーション内の複数のコンポーネントの共有状態を集中管理 (読み取り/書き込み) できます。また、コンポーネント間通信の方法でもあり、あらゆるコンポーネント間通信に適しています

2. Vuex を使用する場合1. 複数のコンポーネントが同じ状態に依存する

##2. 異なるコンポーネントの動作は同じ状態を変更する必要がある

2.1 Vuex の使用方法

まず、Vuex を使用する場合、2 つ以上のコンポーネントが必要になる可能性が高いことを知っておく必要があります。データのセットを共有する必要があるため、最初に 2 つのコンポーネント (それぞれ Count と Person) を準備する必要があります。次に、Vuex はストアに依存して実行するため、src ディレクトリにストア ファイルを追加する必要があります。一連の準備タスク

2.2Countコンポーネント

このコンポーネントでは、マップ...たくさんのものを見ることができます。 vuex #map の 4 つの ## について話さなければならないので、map メソッドの使い方を最後に載せておきますが、ここではこのコンポーネントの機能のみを紹介します Count は「強力な」計算機能を備えたコンポーネントです。最終的な数値を10倍に増幅でき、奇数にもできるし、動作を遅らせることもできるので非常に「強力」です

#
<template>
  <div>
    <h3>当前和为:{{sum}}</h3>
    <h3>当前和为:放大10倍:{{bigSum}}</h3>
    <h3>我在{{school}},学习{{subject}}</h3>
    <h3>下方组件的总人数{{personList.length}}</h3>

    <select v-model.number="num">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="increment(num)">+</button>
    <button @click="decrement(num)">-</button>
    <button @click="incrementOdd(num)">奇数+</button>
    <button @click="incrementWait(num)">500ms后再+</button>
  </div>
</template>
<script>
// 引入mapState等
import { mapState, mapGetters, mapMutations, mapActions } from "vuex";
export default {
  name: "Count",
  data() {
    return {
      num: 1 // 用户选择的数字
    };
  },
  computed: {
    // 使用mapState生成计算属性,从state种读取数据(...mapstate()的意思是将其内的对象全部展开的计算属性里面)
    // ...mapState({ sum: "sum", school: "school", subject: "subject" }), // 对象写法
    ...mapState(["sum", "school", "subject", "personList"]), // 数组写法
    // 使用mapGetters生成计算属性,从getters种读取数据
    // ...mapGetters(["bigSum"]), // 数组写法
    ...mapGetters({ bigSum: "bigSum" }) // 数组写法
  },
  methods: {
    // 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
    ...mapMutations({ increment: "JIA", decrement: "JIAN" }), // 对象式
    ...mapActions({ incrementOdd: "jiaodd", incrementWait: "jiaWait" }) //数组式
    // ...mapActions(["jiaodd", "jiaWait"]) //数组式简写
  },
  mounted() {
  }
};
</script>
<style>
button {
  margin-left: 5px;
}
</style>
ログイン後にコピー

#2.3パーソンコンポーネント

人物コンポーネントは「強力な」人々の機能によって追加され、彼は自分の希望に応じて親戚や友人を追加できます#

<template>
  <div>
    <h3>人员列表</h3>
    <h3>Count组件的求和为{{sum}}</h3>
    <input type="text" placehodler="请输入名字" v-model="name">
    <button @click="add">添加</button>
    <ul>
      <li v-for="p in personList" :key="p.id">{{p.name}}</li>
    </ul>
  </div>
</template>
<script>
import { nanoid } from "nanoid";
export default {
  name: "Person",
  data() {
    return {
      name: ""
    };
  },
  computed: {
    personList() {
      return this.$store.state.personList;
    },
    sum() {
      return this.$store.state.sum;
    }
  },
  methods: {
    add() {
      const personObj = { id: nanoid(), name: this.name };
      this.$store.commit("ADD_PERSON", personObj);
      this.name = "";
    }
  }
};
</script>
ログイン後にコピー
#2.4 コンポーネントの紹介

これら 2 つのコンポーネントをそれぞれアプリに導入します。コンポーネント

<template>
  <div class="container">
    <Count></Count>
    <Person/>
  </div>
</template>

<script>
import Count from "./components/Count";
import Person from "./components/Person";
export default {
  name: "App",
  components: { Count, Person }
};
</script>
ログイン後にコピー
#2.5 ストア フォルダーの下にindex.jsを構成します

#ストア フォルダーの下に新しい Index.js ファイルを作成するには、次のコードをインデックス ファイルに書き込みます。まず、vue と vuex を導入し、アクションを使用して応答します。ここでは 2 つのパラメーターを受け取ることができます:

context

valueこれらは、コンテキストと渡された値を分離します。コンテキスト上で構成した状態ですべてを見つけることができます。これがコンテキスト上にあるものであり、値です。ここでの値の値は、は 1

// 创建VUex种的store核心
import Vue from &#39;vue&#39;
// 引入Vuex
import Vuex from &#39;vuex&#39;
// 使用vuex插件
Vue.use(Vuex)
// 准备actions——用于组件内的动作响应
const actions = {
    // 奇数加法
    jiaodd(context, value) {
        if (context.state.sum % 2) {
            context.commit(&#39;JIA&#39;, value)
        }
    },
    // 延迟加
    jiaWait(context, value) {
        setTimeout(() => {
            context.commit("JIA", value)
        }, 500);
    },
}
// 准备mutations——用于数据操作
const mutations = {
    JIA(state, value) {
        state.sum += value
    },
    JIAN(state, value) {
        state.sum -= value
    },
    ADD_PERSON(state, value) {
        console.log(&#39;mustations种的ADD_PERSON被调用&#39;,state.personList);
        state.personList.unshift(value)
    }
}
// 准备state——用于数据的储存
const state = {
    sum: 0, // 当前和
    school: &#39;山鱼小学&#39;,
    subject: &#39;前端&#39;,
    personList:[{id:&#39;001&#39;,name:&#39;张三&#39;}]
}
// 用于加工state种的数据
const getters = {
    bigSum(state) {
        return state.sum * 10
    }
}
// 创建store并且暴露store
export default new Vuex.Store({
    // actions: actions,// 前后名称一样所以可以触发简写模式
    actions,
    mutations,
    state,
    getters
});
ログイン後にコピー
2 です。4 つのマップ メソッドの使用

#1.集中状態管理 Vuex の使用に関する簡単な分析

mapState

: 状態のデータを計算された属性にマッピングするために使用されます

computed: {
    // 使用mapState生成计算属性,从state种读取数据(...mapstate({})的意思是将其内的对象全部展开的计算属性里面)
    ...mapState({ sum: "sum", school: "school", subject: "subject" }), // 对象写法
        
    // ...mapState(["sum", "school", "subject"]), // 数组写法
  }
ログイン後にコピー
2.mapGetters

: ゲッター内のデータを計算されたプロパティにマップするために使用されます。

#

computed: {
    // 使用mapGetters生成计算属性,从getters种读取数据
    ...mapGetters({bigSum:"bigSum"})
    ...mapGetters(["bigSum"])
  }
ログイン後にコピー
3.mapMutations :関数 $store.commit()

methods: {
    // 借助mapMutations生成对应的方法,方法种会调用相应的commit去联系mutations
    ...mapMutations({ increment: "JIA", decrement: "JIAN" }), // 对象式
    // ...mapMutations(["JIA", "JIAN"]), // 数组式(button的名字和vuex里面的名字必须统一)
  },
ログイン後にコピー
3.## を含む、ミューテーションと通信するメソッドの生成に使用します。 #mapActions : $store.commit() の関数を含む、ミューテーションと通信するメソッドの生成に使用されます

  methods: {
     // 借助mapActions生成对应的方法,方法种会调用相应的dispath去联系actions
    ...mapActions({ incrementOdd: "jiaodd", incrementWait: "jiaWait" }), //对象式
    // ...mapActions(["jiaodd", "jiaWait"]) //数组式
  },
ログイン後にコピー

注: mapActions と mapMutation を使用する場合、必要に応じてパラメータを渡すには、テンプレートでイベントをバインドするときにパラメータを渡す必要があります。それ以外の場合、パラメータはイベント オブジェクトです。 (学習ビデオ共有: vuejs 入門チュートリアル 基本プログラミング ビデオ )

以上が集中状態管理 Vuex の使用に関する簡単な分析の詳細内容です。詳細については、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 は単一の状態ツリーを使用してアプリケーションのすべての状態を管理し、コンポーネントから状態を抽出することで、状態管理をより明確かつ理解しやすくします。多くの状態を持つアプリケーションではモジュールを使用する必要があります

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

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

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

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

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 を定義する必要があります。

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

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

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 を使用するにはどうすればよいですか? Vue でコンポーネント通信に vuex を使用するにはどうすればよいですか? Jul 19, 2023 pm 06:16 PM

Vue でコンポーネント通信に vuex を使用するにはどうすればよいですか? Vue は、コンポーネントベースの開発モデルを採用する人気の JavaScript フレームワークで、複雑なアプリケーションをより簡単に構築できるようにします。 Vue のコンポーネント開発プロセスでは、異なるコンポーネント間の通信が必要な状況によく遭遇します。 Vuex は Vue が公式に推奨する状態管理ツールで、集中ストレージ マネージャーを提供し、コンポーネント間の通信の問題を解決します。この記事では、Vue でのコンポーネント通信に Vuex を使用する方法を紹介します。

See all articles