美文网首页Vue
Vuex-命名空间

Vuex-命名空间

作者: hello_web_Front | 来源:发表于2020-09-20 22:15 被阅读0次

主要记录一下加了namespaced:true的时候,如何访问module里面的数据

user.js

export default {
    namespaced:true,
    state:{
        username:'张三1'
    },
    mutations:{
        setUsername(state,name){
            console.log(name)
        }
    },
    getters:{
        usernameDesc(state){
            return '当前用户的姓名是'+state.username
        }
    },
    actions:{
        AsyncSetUsername({commit,state}){
            setInterval(()=>{
                commit('setUsername','user')
            },2000)
        }
    }
}

cart.js

export default {
    namespaced:true,
    state:{
        cart:'129'
    },
    mutations:{
        setUsername(state,name){
            console.log(name)
        }
    },
    getters:{
        cartDesc(state){
            return '商品的价格是'+state.cart
        }
    },
    actions:{
        AsyncSetUsername({commit,state}){
            setInterval(()=>{
                commit('setUsername','cart')
            },2000)
        }
    }
}

store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);
import user from './user/user.js'
import cart from './cart/cart.js'
import test from './test/test.js'
export default new Vuex.Store({
    modules:{
        user,
        cart,test
    }
})

1. 访问state

state没有什么变化 在访问的时候和没加上namespaced一样,加上模块的名字即可

...mapState({
                username(state) {
                    return state.user.username
                },
                cart(state){
                    return state.cart.cart;
                }
            })

2. 访问mutations

使用辅助函数的时候,第一个是方法的别名,如果moduleA和muduleB中名字一样 可以起别名,不然的话建议和module里面的名称一致,第二个参数则是命名空间的名字也就是模块名/模块下对应的方法名

# 引入        
            ...mapMutations({
                setUsername:'user/setUsername',
                setUsername1:"cart/setUsername"
            })
# 使用 注意我这个是在uniapp上进行测试的 vue的话 这里是mounted/created/beforeMount都可
onLoad() {  
            // mutations
            this.setUsername('我是module/user'); //我是module/use user.js:8
            this.setUsername1('我是module/cart') //我是module/cart cart.js:8            
        }

3. 访问getters

getters和actions的访问其实和mutations的访问方式是一样的

            ...mapGetters({
                cartDesc:'cart/cartDesc',
                usernameDesc:'user/usernameDesc'
            })


          // getters
            console.log(this.cartDesc)
            console.log(this.usernameDesc)

4.访问actions

            # 这里同名了 就需要进行一个起别名
            ...mapActions({
                AsyncSetUsername:'user/AsyncSetUsername',
                AsyncSetUsername1:"cart/AsyncSetUsername"
            })
            // actions
            this.AsyncSetUsername();
            this.AsyncSetUsername1();
            

相关文章

  • Vuex-命名空间

    主要记录一下加了namespaced:true的时候,如何访问module里面的数据 user.js cart.j...

  • vuex-命名空间namespaced:true

    将state写成模块化 使用这个两个模块 使用者两个模块 使用这样的简写方式,要添加namespaced:true...

  • Hbase 查询语句

    进入HBase数据库 HBase帮助命令: 命名空间 列出所有命名空间 新建命名空间 删除命名空间 该命名空间必须...

  • NDK开发:C++基础

    一、命名空间 standard:标准命名空间 命名空间类似于java中的包。 自定义命名空间 使用命名空间 ::为...

  • Chapter 18 Large-scale project t

    命名空间 inline命名空间 inline声明的命名空间, 可以无视本层命名空间, 而可以被直接使用. 用处: ...

  • C#随笔1

    1命名空间 语法 namespace 命名空间名称{若干个类型} ORnamespace 命名空间名称.子命名...

  • 07_Python函数进阶_全栈开发学习笔记

    # 1. 命名空间 ## 1.1 命名空间的种类 命名空间共有有三种 1) 内置命名空间 —— python解释器...

  • C++入门05 --命名空间,继承,访问权限,初始化列表

    命名空间 命名空间主要是用来解决命名冲突的; namespace xxxx { }:命名空间的定义; 利用::域运...

  • 命名空间 namespace

    /*命名空间:命名空间是一种封装事物的方法命名空间怎么声明?关键字: namespace 导入命名空间: use起...

  • chapter18_命名空间

    命令空间 每个命名空间都是一个作用域位于该命名空间之外的代码必须明确指出所用的名字属于哪个命名空间 命名空间可以是...

网友评论

    本文标题:Vuex-命名空间

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