Vue3使用vuex模块配置

522 阅读1分钟

这篇文章技术含量不是很高(属于比较水),需要自取。

说明:vue3项目越做越大,导致数据管理比较复杂,针对这一情况我们推荐使用各个模块分开管理(用户的信息就用用户模块,首页的数据就用首页模块管理,......)

推荐直接看网站(vuex看这个也可以)

vuex4链接地址

先看目录

模块说明:

// store  index.js
配置store具体的创建和actions、mutations功能的引入

// store actions .js
使用具体的dispatch触发的功能

// store mutations
接收actions传递过来的数据,并修改state

// store type.js
配置公共的action类型,统一配置,减少出错

// store module/*
不同的模块存放不同的state

store type.js

export default { // 这个里边也可以使用模块对象管理,根据业务可以自由选择
    ADD: "ADD",
    GOODSID: "GOODSID",
}

store index.js

import { createStore } from 'vuex'import actions from "./actions";
import mutations from "./mutations";
import moduleUser from './user/user'
import moduleGoods from "./goods/goods";
const store = createStore({ 
    actions,    
    mutations,    
    modules: {       
         user: moduleUser,        
        goods: moduleGoods    
}})

export default store

store actions.js

import type from './type'
export default {
    Add ({commit}, payload) {
        commit(type.ADD, payload)
    },
    setGoodsId ({commit}, payload) {
        commit(type.GOODSID, payload)
    },
}

store mutations.js

import type from './type'
export default {
    [type.ADD](state, payload){
        state.user.number = payload
    },
    [type.GOODSID](state, payload){
        state.goods.goodsId = payload
    },
}

store/user/user.js

const moduleUser = {
    state () {
        return {
            userId: 0
        }
    }
}

export default moduleUser

store/goods/goods.js


const moduleGoods = {
    state () {
        return {
            goodsId: 12
        }
    }
}

export default moduleGoods

main.js配置store全局使用

// 需要修改默认的代码
import { createApp } from 'vue'
// import router from "./routers";
import App from './App.vue'
import store from "./store";
const app = createApp(App)

// app.use(router)
app.use(store)
app.mount('#app')

view/RenderFunction.vue

<template>
<div>
  <h2>RenderFunction--{{$store.state.user.userId}}</h2>
  <h2>RenderFunction--{{$store.state.goods.goodsId}}</h2>
  <button @click="Add">add</button>
</div>
</template>

<script setup>
import { useStore } from 'vuex'
const store = useStore() // 使用useStore获取store
const Add = () => {
  console.log(store)
    store.dispatch('Add', Math.random()) 
    store.dispatch('setGoodsId', Math.floor(Math.random() * 100000))
}
</script>

<style scoped>

</style>