美文网首页
vuex模块化

vuex模块化

作者: hszz | 来源:发表于2021-11-07 23:09 被阅读0次

demo

store/modules/user.js
  • 可以通过添加 namespaced: true 的方式使其成为带命名空间的模块。当模块被注册后,它的所有 getter、action 及 mutation 都会自动根据模块注册的路径调整命名。
export default {
    namespaced: true, // 命名空間

    state: {
        userInfo: {
            name: 'hsz',
            token: 'hsz-token'
        }
    },

    getters: {
        gettersUserInfo(state) { // -> getters['user/gettersUserInfo']
            return (
                'name: ' + state.userInfo.name + ',token: ' + state.userInfo.token
            )
        }
    },

    mutations: { // -> mutations['user/updateName']
        updateName(state) {
            state.userInfo.name += '1'
        }
    },
  
    actions: {   
        updateNameAction(context) { // -> actions['user/updateNameAction']
            setTimeout(() => {
                context.commit('updateName')
            }, 500)
        }
    }
}
store/index.js
import { createStore } from 'vuex'
import user from './modules/user'

export default createStore({
    // 引入user模块
    modules: {
        user: user,
    }
})
views/About.vue

模块化且使用命名空间之后调用写法有所不同

<template>
    <div class="about">
        <!-- user模块 -->
        <div class="user">
            (state)->用户名:{{ this.$store.state.user.userInfo.name }}
        </div>
        <div class="">(mapState)->用户名:{{ userInfo.name }}</div>
        <div>(getters)->{{ this.$store.getters['user/gettersUserInfo'] }}</div>
        <div>(mapGetters)->{{ gettersUserInfo }}</div>
        <div>
            <button @click="this.$store.commit('user/updateName')">
                mutations修改用户名
            </button>
            <button @click="this.$store.dispatch('user/updateNameAction')">
                actions修改用户名
            </button>
        </div>
        <div>
            <button @click="updateName()">mapMutations修改用户名</button>
            <button @click="updateNameAction()">mapActions修改用户名</button>
        </div>
    </div>
</template>

<script>
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'
export default {
    components: {
    },
    computed: {
        ...mapState({ userInfo: state => state.user.userInfo }),
        ...mapGetters({ gettersUserInfo: 'user/gettersUserInfo' })
    },
    methods: {
        ...mapMutations({ updateName: 'user/updateName' }),
        ...mapActions({ updateNameAction: 'user/updateNameAction' })
    }
}
</script>

<style scoped>
.user {
    margin-top: 30px;
}
</style>

image.png

demo-gitee地址
官网

相关文章

  • 模块化vuex,获取、设置数据,及刷新保留数据方法

    前言 1.模块化vuex2.获取vuex中的数据3.设置vuex中的数据4.刷新之后,保留数据 模块化vuex 数...

  • VUEX模块化

    vuex模块化官方文档 项目github地址 在vuex的官网上,关于模块化和热重载的文档都是蛮详细的,这边也就不...

  • vuex相关文章

    vuex模块化和命名空间的实例代码

  • vuex持久化+模块化实战用法(进阶篇)

    上一篇:vuex刷新数据消失不见解决方案 Vuex模块化 模块化后的 store 大概长这样,如果画的不对,欢迎留...

  • vuex入门实例2

    vuex入门实例2 这章节我准备以requirejs模块化,讲解下如何快速上手vuex 源码地址 工程代码结构如下...

  • 2018-03-13

    Vuex 进阶——模块化组织 Vuex 前两篇讲解了一下 Vuex 的基本使用方法,可是在实际项目中那么写肯定是不...

  • vuex模块化

    上一节[https://www.jianshu.com/p/5dd561f3570d] modules modul...

  • vuex模块化

    demo store/modules/user.js 可以通过添加 namespaced: true 的方式使其成...

  • vuex模块化

    App.vue Count.vue Person.vue index.js count.js(只写count相关逻...

  • Vuex模块化

    目录 配置 在src目录下新建store文件夹,内部新建add.js、cut.js和index.js 其中主体的配...

网友评论

      本文标题:vuex模块化

      本文链接:https://www.haomeiwen.com/subject/apbyzltx.html