Vue vuex
すべてのコンポーネントの一元データ・リポジトリとして、ステータスを予測可能に変更できます。
// /src/store
import { createStore } from "vuex";
const store = createStore({
state() {
return {
count: 0,
cart: [
{
product_id: 1,
product_name: "아이폰 거치대",
category: "A",
},
],
};
},
getters: {
cartCount: (state) => {
return state.cart.length;
},
},
mutations: {
increment(state, payload) {
state.count += payload;
},
},
actions: {
increment(context, payload) {
//비동기 처리 로직 수행 가능
context.commit("increment", payload);
},
},
});
export default store;
// /views/StoreAccess
<template>
<p>Count : {{ count }}</p>
<p>cartCount : {{ cartCount }}</p>
<button type="button" @click="increment">Increment</button>
</template>
<script>
export default {
computed: {
count() {
return this.$store.state.count;
},
cartCount() {
return this.$store.getters.cartCount;
},
},
methods: {
increment() {
// this.$store.commit("increment", 1);
this.$store.dispatch("increment", 1);
},
},
};
</script>
state-プロジェクト全体に共通する変数を定義します。stateで定義された変数は、常に計算プロパティを使用して変更を追跡できます。
computed: {
count() {
return this.$store.state.count;
}
}
getters-stateに格納されている変数はgettersとして簡単にインポートできます。state値をそのまま入力するのとは異なり、演算によって値を変更できます。
computed: {
cartCount() {
return this.$store.getters.cartCount;
}
}
突然変異-ステータスで定義された変数を直接変更することはできません。したがって,突然変異を利用して状態を変化させる.突然変異は同期処理される。変異で定義された関数をcommitで呼び出します。
methods: {
increment() {
this.$store.commit('increment');
}
}
Actionsは突然変異とは異なり,非同期で処理されている。storeが非同期処理ロジックを管理できるようにします。
actions: {
increment(context) {
context.commit('increment');
}
}
Reference
この問題について(Vue vuex), 我々は、より多くの情報をここで見つけました https://velog.io/@uvula6921/Vue-vuexテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol