功能描述

由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长。为了解决这个问题,Vue提供vuex。

本例实现功能描述

本列创建了一个状态,并在另一个组件中查看并修改了状态。

[!TIP|label: 定义storeMessage.js]
我们以基础框架为基础,在src/store文件夹下新建一个storeMessage.js文件

  1. export default ({
  2. state: {
  3. // 这里放全局参数
  4. message: 'Hello!'
  5. },
  6. mutations: {
  7. // 这里是set方法
  8. setMessage (state, newValue) {
  9. state.message = newValue
  10. }
  11. },
  12. getters: {
  13. // 这里是get方法
  14. getMessage: state => state.message
  15. }
  16. })

[!TIP|label: 配置统一状态分组]
找到sys/store/index.js文件,先导入storeMessage文件,再在medules下配置storeMessage

  1. import storeMessage from "./storeMessage";
  2. Vue.use(Vuex)
  3. export default new Vuex.Store({
  4. modules: {
  5. common,
  6. user,
  7. storeMessage
  8. }
  9. })

[!TIP|label: 定义homeStore.vue]
再在src/views/basic/sys文件夹下新建一个homeStore.vue文件,再为其配置菜单
配置菜单的具体方法见vue方式开发指南-部署与启动里面的菜单路由配置

  1. <template>
  2. <div>
  3. <button @click="checkMessage()"> 查看状态 </button>
  4. <button @click="changeMessage()"> 改变状态 </button>
  5. <p>{{ msgStore }}</p>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. name: "homeStore",
  11. methods: {
  12. checkMessage() {
  13. console.log (this.$store.getters.getMessage)
  14. },
  15. changeMessage() {
  16. this.$store.commit('setMessage', '李四');
  17. console.log (this.$store.getters.getMessage)
  18. }
  19. },
  20. computed:{
  21. msgStore: function () {
  22. return this.$store.getters.getMessage
  23. }
  24. }
  25. }
  26. </script>
  27. <style scoped>
  28. </style>