Vue3中vuex的使用方法

目录

目录​​​​​​​

安装

main.js:

一:无模块化

store/index.js:

使用方法:

二:模块化

store/index.js:

store/home.js:

使用方法:



安装

cnpm i vuex@4

main.js:

import { createApp } from 'vue'
import App from './App.vue'
import store from './store/index'//一

const app = createApp(App)

app.use(store)//二

app.mount('#app')


 

一:无模块化

store/index.js:
//store/index.js
import { createStore } from 'vuex'

export default createStore({
    actions: {
        // context 上下文对象,可以理解为store
        sum_actions(context, num) {
            setTimeout(() => {
                context.commit('sum', num)  // 通过context去触发mutions中的sum
            }, 1000)
        }
    },
    mutations: {
        // 传入 state
        increment(state) {
            state.count++
        },
        sum(state, num) {
            // console.log(num);
            state.count += num.value
        }
    },
    state: {
        num: 0,
        str: '这是state数据',
        count:0
    },
    getters: {
        getterCount(state, getters) {
            // console.log(state);
            return state.count +"我是getters"
        }
    }
})
使用方法:
<template>
  <div>
    <div>
      Vuex仓库的值:
      <span>
        {{ state.num }}
        {{ state.str }}
        <!-- getters的用法 -->
        {{$store.getters.getterCount}}
      </span>
    </div>
  </div>
</template>

<script setup>
import { ref } from "vue";
import { useStore } from "vuex";//引入

//#region  Vuex
let store = useStore();

//state
let state = store.state;
// console.log(store.state);

//actions
store.dispatch('sum_actions', num)

//mutations
store.commit("increment");

const add = (num) => {
  store.commit("sum", num);
};
//#endregion

</script>

二:模块化

store/index.js:
//store/index.js
import { createStore } from 'vuex'

import home from './home'

export default createStore({
    modules: {
        'home':home
    }
})
store/home.js:
// store/home
export default {
    actions: {
        // context 上下文对象,可以理解为store
        sum_actions(context, num) {
            setTimeout(() => {
                context.commit('sum', num)  // 通过context去触发mutions中的sum
            }, 1000)
        }
    },
    mutations: {
        // 传入 state
        increment(state) {
            state.count++
        },
        sum(state, num) {
            // console.log(num);
            state.count += num.value
        }
    },
    state: {
        num: 0,
        str: '这是state数据',
        count: 0
    },
    getters: {
        getterCount(state, getters) {
            // console.log(state);
            return state.count + "我是getters"
        }
    }
}
使用方法:
<template>
  <div>
    <div>
      Vuex仓库的值:
      <span>
        {{ state.num }}
        {{ state.str }}
        <!-- getters的用法 -->
        {{$store.getters.getterCount}}
      </span>
    </div>
  </div>
</template>

<script setup>
import { ref } from "vue";
import { useStore } from "vuex";

//#region  Vuex
let store = useStore();

//state
let state = store.state.home;//这里使用了模块化
console.log(store);

//actions
store.dispatch('sum_actions', num)

//mutations
store.commit("increment");

const add = (num) => {
  store.commit("sum", num);
};
//#endregion
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值