命名空间
开启了namespaced,需要在引用中加入模块名
import {mapState, mapGetters} from 'vuex'
- 开启
computed: {
// 开启命名空间
...mapState ({
userName: state => state.user.userName
})
或者
...mapState ('user',{
userName: state => state.userName
})
或者
...mapState('user',[
userName: state => state.userName
])
}
- 未开启
computed: {
...mapState ({
userName: state => state.userName
})
或者
...mapState ({
userName: state => state.userName
})
或者
...mapState([
'userName'
])
}
get 和set
appName: {
set: function (newValue) {
this.inputValue = newValue + 'new'
},
get: function () {
return this.inputValue + 'get'
}
},
修改值
mutations.js定义一个方法
const mutations = {
// state 同级的state
SET_APP_NAME (state,params) {
state.appName = params.appName
}
}
export default mutations
// 调用
methods: {
handleChangeAppName () {
// 提交的函数名称,新的值
this.$store.commit('SET_APP_NAME','MyAppName')
//或者使用对象的方式
this.$store.commit({
type: 'SET_APP_NAME',
appName: 'MyAppName'
})
}
}
//注意: state没有的值,需要使用vue.set()的方法赋值
动态注册模块
registerModule () {
this.$store.registerModule('todo', {
state: {
todoList: [
'学习mutations',
'学习actions'
]
}
})
}
// 模块注册子模块
registerModule () {
this.$store.registerModule(['user','todo'], {
state: {
todoList: [
'学习mutations',
'学习actions'
]
}
})
}
}
网友评论