ÀÖÓãµç¾º

  • ½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

    È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

    vuexÊÇʲô?¾ßÌåʹÓò½ÖèÊÇʲô?

    ¸üÐÂʱ¼ä:2023Äê07ÔÂ20ÈÕ10ʱ36·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

    ºÃ¿Ú±®ITÅàѵ

    ¡¡¡¡VuexÊÇÒ»¸öÓÃÓÚVue.jsÓ¦ÓóÌÐòµÄ״̬¹ÜÀíģʽ¿â¡£ËüÖ÷ÒªÓÃÓÚÔÚVue.jsÓ¦ÓóÌÐòÖйÜÀíºÍ¹²Ïí״̬(Êý¾Ý)µÄ¼¯ÖÐʽ´æ´¢¡£Í¨¹ýVuex£¬ÎÒÃÇ¿ÉÒÔÔÚ²»Í¬µÄ×é¼þÖ®¼ä¹²Ïí״̬£¬Ê¹µÃÓ¦ÓóÌÐòµÄ״̬¹ÜÀí¸ü¼Ó¼òµ¥ºÍ¿Éά»¤¡£

    ¡¡¡¡VuexÖ÷Òª°üº¬ÒÔϼ¸¸öºËÐĸÅÄ

    ¡¡¡¡1.State(״̬)

    ¡¡¡¡´æ´¢Ó¦ÓóÌÐòµÄ״̬(Êý¾Ý)¡£

    ¡¡¡¡2.Getters(»ñÈ¡Æ÷)

    ¡¡¡¡ÀàËÆÓÚ¼ÆËãÊôÐÔ£¬ÓÃÓÚ´Ó״̬ÖÐÅÉÉú³öһЩ״̬£¬¹©×é¼þʹÓá£

    ¡¡¡¡3.Mutations(Í»±ä)

    ¡¡¡¡ÓÃÓÚ¸ü¸Ä״̬£¬Òò´ËËüÃÇÊÇÐÞ¸Ä״̬µÄΨһ;¾¶¡£Mutations±ØÐëÊÇͬ²½º¯Êý¡£

    ¡¡¡¡4.Actions(¶¯×÷)

    ¡¡¡¡ÓÃÓÚÌá½»Mutations£¬¿ÉÒÔ°üº¬ÈÎÒâÒì²½²Ù×÷¡£

    ¡¡¡¡5.Modules(Ä£¿é)

    ¡¡¡¡ÔÊÐí½«store²ð·ÖΪÄ£¿é£¬Ã¿¸öÄ£¿é¶¼ÓÐ×Ô¼ºµÄstate¡¢getters¡¢mutationsºÍactions¡£

    ¡¡¡¡Ê¹ÓÃVuexµÄ²½ÖèÈçÏ£º

    ¡¡¡¡1.°²×°Vuex£º

    ¡¡¡¡Ê×ÏÈ£¬ÔÚVue.jsÏîÄ¿Öа²×°Vuex¿â¡£ÎÒÃÇ¿ÉÒÔʹÓÃnpm»òyarn½øÐа²×°£º

    npm install vuex
    # »ò
    yarn add vuex

    ¡¡¡¡2.´´½¨Vuex Store£º

    ¡¡¡¡ÔÚÏîÄ¿µÄÈë¿ÚÎļþ(ͨ³£ÊÇmain.js)ÖУ¬´´½¨Ò»¸öVuex storeʵÀý¡£ÔÚÕâ֮ǰ£¬ÐèÒªÎÒÃǵ¼ÈëVueºÍVuex£¬²¢Ê¹ÓÃVue.use()À´½«VuexÌí¼Óµ½VueʵÀýÖС£

    import Vue from 'vue';
    import Vuex from 'vuex';
    
    Vue.use(Vuex);
    
    const store = new Vuex.Store({
      // ÔÚÕâÀﶨÒåÄúµÄ״̬£¨state£©¡¢»ñÈ¡Æ÷£¨getters£©¡¢Í»±ä£¨mutations£©ºÍ¶¯×÷£¨actions£©
    });
    
    new Vue({
      // ...
      store, // ½«Vuex storeʵÀýÌí¼Óµ½VueʵÀýÖÐ
      // ...
    }).$mount('#app');

    ¡¡¡¡3.¶¨ÒåState£º

    ¡¡¡¡ÔÚVuex storeÖУ¬¶¨ÒåÓ¦ÓóÌÐòµÄ״̬¡£

    import Vue from 'vue';
    import Vuex from 'vuex';
    
    Vue.use(Vuex);
    
    const store = new Vuex.Store({
      // ÔÚÕâÀﶨÒåÄúµÄ״̬£¨state£©¡¢»ñÈ¡Æ÷£¨getters£©¡¢Í»±ä£¨mutations£©ºÍ¶¯×÷£¨actions£©
    });
    
    new Vue({
      // ...
      store, // ½«Vuex storeʵÀýÌí¼Óµ½VueʵÀýÖÐ
      // ...
    }).$mount('#app');

    ¡¡¡¡4.¶¨ÒåGetters£º

    ¡¡¡¡¸ù¾ÝÐèÒª£¬¶¨Òå»ñÈ¡Æ÷À´ÅÉÉú¼ÆËã״̬¡£

    const store = new Vuex.Store({
      state: {
        count: 0,
      },
      getters: {
        doubleCount: (state) => state.count * 2, // ʾÀý»ñÈ¡Æ÷
        // ¸ü¶àµÄ»ñÈ¡Æ÷...
      },
    });

    ¡¡¡¡5.¶¨ÒåMutations£º

    ¡¡¡¡¶¨ÒåÐÞ¸Ä״̬µÄÍ»±ä¡£

    const store = new Vuex.Store({
      state: {
        count: 0,
      },
      mutations: {
        increment(state) {
          state.count++;
        },
        // ¸ü¶àµÄÍ»±ä...
      },
    });

    ¡¡¡¡6.¶¨ÒåActions£º

    ¡¡¡¡¶¨ÒåÌá½»MutationsµÄ¶¯×÷£¬¿ÉÒÔ°üº¬Òì²½²Ù×÷¡£

    const store = new Vuex.Store({
      state: {
        count: 0,
      },
      mutations: {
        increment(state) {
          state.count++;
        },
      },
      actions: {
        asyncIncrement(context) {
          setTimeout(() => {
            context.commit('increment');
          }, 1000);
        },
        // ¸ü¶àµÄ¶¯×÷...
      },
    });

    ¡¡¡¡7.ÔÚ×é¼þÖÐʹÓÃVuex£º

    ¡¡¡¡ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÔÚVue×é¼þÖÐʹÓÃVuexÀ´»ñȡ״̬¡¢ÅÉÉú¼ÆËã״̬¡¢Ìύͻ±äºÍÖ´Ðж¯×÷¡£

    <template>
      <div>
        <p>Count: {{ count }}</p>
        <p>Double Count: {{ doubleCount }}</p>
        <button @click="incrementCount">Increment</button>
        <button @click="asyncIncrementCount">Async Increment</button>
      </div>
    </template>
    
    <script>
    export default {
      computed: {
        count() {
          return this.$store.state.count;
        },
        doubleCount() {
          return this.$store.getters.doubleCount;
        },
      },
      methods: {
        incrementCount() {
          this.$store.commit('increment');
        },
        asyncIncrementCount() {
          this.$store.dispatch('asyncIncrement');
        },
      },
    };
    </script>

    ¡¡¡¡ÒÔÉÏÊÇʹÓÃVuexµÄ»ù±¾²½Ö裬µ±ÎÒÃǵÄÓ¦ÓóÌÐòÐèÒª¹ÜÀí¸ü¸´ÔÓµÄ״̬ʱ£¬¿ÉÒÔ½øÒ»²½À©Õ¹Vuex storeÒÔÂú×ãÎÒÃǵÄÐèÇó¡£

    0 ·ÖÏíµ½£º
    ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
    ¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿