1、vuex 动态模块配置

import Vue from 'vue'
import Vuex from 'vuex'
import store from '@/store'; // 使用Vuex插件,即使插件被调用多次,插件也只会安装一次
Vue.use(Vuex); // state存储数据的状态
const state = { // 数据状态
name: 'mfg'
} // getters获取数据状态 const getters = { // 可以使用store.getters.myName获取数据
myName: state => {
return state.name
}
} // mutations更改数据状态的唯一方法
const mutations = { // 每个mutations都有一个事件类型type和回调函数。下面代码type为editName,回调函数即完成数据更改。
// agr为参数
editName(state, arg) {
state.name = arg;
}
} // actions提交的是mutation,处理的异步操作
const actions = { // 传递的参数为arg
editNameAction({ commit, state }, arg) {
commit('editName', arg)
}
} // registerModule,在 store 创建之后,注册模块
// 模块动态注册功能可以让其他vue插件使用注册好的新模块
store.registerModule('myNameSpace', { // 命名空间,模块具有更高的封装度和复用性
namespaced: true,
state,
mutations,
getters,
actions
})

或者组件注册:

<script>
import storeIndex from '../protect/store'
import store from '@/store' export default {
name: 'intelligence',
beforeMount() {
//组件注册store的命名空间
store.registerModule('intelligence', storeIndex)
},
destroyed() {
//组件销毁store的命名空间
store.unregisterModule('intelligence')
}
}
</script> /protect/store文件:
export default {
namespaced: true,
modules: {
common,
workflow,
configfile,
sysdetail,
unitdetail
}
}

2、vue单文件demo

<template>
<div>
<!-- 使用mapState获取数据状态 -->
<p>{{name}}</p>
<!-- 使用mapGetters获取数据状态 -->
<p>{{myName}}</p>
<!-- 使用mapMutations更改数据状态 -->
<el-button @click="edit('abc')">修改名字</el-button>
<!-- 使用mapActions更改数据状态 -->
<el-button @click="edit2('def')">修改名字2</el-button>
</div>
</template>
<script> import sti from 'commons/sti';
import './store'; // 辅助函数mapMutations, mapActions, mapGetters, mapState
import { mapMutations, mapActions, mapGetters, mapState } from 'vuex'; export default sti.page({
computed: { // 使用对象展开运算符将此对象混入到外部对象中
// 第一个参数为模块上下文myNameSpace
...mapState('myNameSpace', {
name: state => state.name
}), // 使用对象展开运算符将此对象混入到外部对象中
// 第一个参数为模块上下文myNameSpace
...mapGetters('myNameSpace', ['myName'])
}, data() {
return {}
}, methods: { // 第一个参数为模块上下文myNameSpace
...mapMutations('myNameSpace', ['editName']), // 第一个参数为模块上下文myNameSpace ...mapActions('myNameSpace', ['editNameAction']), // 也可以这样写
// ...mapActions(['myNameSpace/editNameAction']),
edit(arg) { // 更新数据状态
this.editName(arg);
},
edit2(arg) { // 更新数据状态
this.editNameAction(arg);
}
}, mounted() {}
});
</script>

在mutations中可以将type设置为常量

const mutations = {

  [types.THEME_UPDATE](state, theme) {
state.appTheme = theme
}
}
const actions = {

  updateTheme: ({commit}, theme) => {
commit(types.THEME_UPDATE, theme)
}
}

3、严格模式

const store = new Vuex.Store({
// ...
strict: process.env.NODE_ENV !== 'production'
})

在严格模式下,无论何时发生了状态变更且不是由 mutation 函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。

最新文章

  1. 【分布式】Zookeeper会话
  2. to_char函数
  3. 【BZOJ-1123】BLO Tarjan 点双连通分量
  4. [BTS] Error biztalk arguments null exception string reference not set to an instance of a string. parameter name
  5. oracle连接数据
  6. Day9 网络编程
  7. Collection和Map
  8. jquery.imagezoom.js制作鼠标悬停图片放大镜特效、参数和最简教程
  9. 代理模式(Proxy)
  10. AJAX跨域问题解决思路
  11. Linux 性能监测:IO
  12. 分别求二叉树前、中、后序的第k个节点
  13. LeetCode202:Happy Number 。C#版,在vs2010中通过,leetcode中Wrong Answer
  14. &lt;T extends Comparable&lt;? super T&gt;&gt;什么意思
  15. thymeleaf 获取sessionid
  16. Java并发-多线程面试(全面)
  17. SQL语句:查看排名前五的SQL语句耗时情况
  18. 明日传奇第三季/全集Legends of Tomorrow迅雷下载
  19. 批量 1 insert into select 2 sqldataadapter.update 3 SELECT INTO FROM (要求目标表不存在) 4 AddRange(ef) 5 MySqlBulkLoader.Load() 6 BatchInsert 7 insert bulk
  20. python3学习笔记.4.turtle绘图

热门文章

  1. Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
  2. PHP单例类
  3. STL的常用用法、函数汇总(不定时更新)
  4. 【序列莫队+树状数组】BZOJ3289-Mato的文件管理
  5. 【Trie模板】HDU1251-统计难题
  6. 添加HP消息队列
  7. 粗览Activiti&#160;Modeler操作和源代码
  8. Eureka的自我保护机制
  9. 【LaTeX】E喵的LaTeX新手入门教程(4)图表
  10. [转]MSSQL多列取最大或者最小值