Vuex 简单使用
  • 概述

    实现不同组件对同一个变量的调用与修改;
    2. Vuex 简单使用_简单使用

  • 项目结构

    2. Vuex 简单使用_简单使用_02
  • 文件代码

    • main.js

      import App from './App.vue'
      import store from "@/store";
      
      Vue.config.productionTip = false
      
      new Vue({
        render: h => h(App),
        store
      }).$mount('#app')
      
    • App.vue

      <template>
        <div id="app">
          <h1>count: {{ $store.state.count }}</h1>
          <Com1></Com1>
          <Com2></Com2>
        </div>
      </template>
      
      <script>
      import Com1 from "@/components/Com1"
      import Com2 from "@/components/Com2";
      
      export default {
        name: 'App',
        components: {
          Com1,
          Com2
        }
      }
      </script>
      
    • store/index.js

      import Vue from 'vue'
      import Vuex from 'vuex'
      
      Vue.use(Vuex)
      
      const store = new Vuex.Store({
          state: {
              count: 1
          },
          mutations: {
              increment(state) {
                  state.count++
              }
          }
      })
      
      export default store
      
    • Com1.vue

      <template>
          <div>
              这是COM1组件内部调用count:{{ $store.state.count }}
              <button @click="increment">+</button>
          </div>
      </template>
      
      <script>
          export default {
              name: "Com1",
              methods: {
                  increment() {
                      this.$store.commit('increment')
                  }
              }
          }
      </script>
      
      <style scoped>
      
      </style>
      
    • Com2.vue

      <template>
          <div>
              这是COM2组件内部调用count:{{ $store.state.count }}
              <button @click="increment">+</button>
          </div>
      </template>
      
      <script>
          export default {
              name: "Com2",
              methods: {
                  increment() {
                      this.$store.commit('increment')
                  }
              }
          }
      </script>
      
      <style scoped>
      
      </style>