<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      簡(jiǎn)單使用vuex狀態(tài)管理

      vuex狀態(tài)管理

      概述

      1. vuex主要由state,mutations,actions,getters四部分構(gòu)成(modules本文暫不闡述)
      2. state
        • 全局狀態(tài),只讀
        • 組件讀取state方式
          • 根組件上引入并掛載store對(duì)象,其他組件在計(jì)算屬性通過(guò)$store獲取狀態(tài)
          • 可以在計(jì)算屬性上使用mapState輔助函數(shù)簡(jiǎn)化state獲取過(guò)程
      3. getters
        • 全局狀態(tài)的計(jì)算屬性
        • 組件讀取getters方式,同state
        • getters參數(shù)
          • state(全局狀態(tài))
          • getters (全局其他getters)
        • 可以通過(guò)閉包(返回一個(gè)新函數(shù))進(jìn)行函數(shù)式傳參調(diào)用
      4. mutations
        • 唯一改變?nèi)譅顟B(tài)的方法,只允許同步修改state
        • 組件使用mutations方式
          • 使用$store.commit(名字, 參數(shù))
          • 可以在組件methods中使用mapMutations輔助函數(shù)簡(jiǎn)化
        • mutations-types(可選)
          • 可以使用常量來(lái)代替字符串,以減少提交mutation的類型的出錯(cuò)率
          • 如:increment -> export const INCREMENT = "increment"
      5. actions
        • 允許異步改變?nèi)譅顟B(tài)的方式
        • 本質(zhì)是在action函數(shù)內(nèi)部手動(dòng)提交mutation
        • 組件使用actions方式
          • 使用$store.dispatch(名字, 參數(shù))
        • actions參數(shù)
          • context對(duì)象,包含conmmit, dispatch方法,state等
          • payload
        • 可以在action函數(shù)中使用promise來(lái)控制異步任務(wù)順序

      代碼示例

      // store
      import Vuex from "vuex";
      import Vue from "vue";
      
      Vue.use(Vuex);
      
      const store = new Vuex.Store({
        // 開(kāi)發(fā)環(huán)境下開(kāi)啟嚴(yán)格模式,不是由 mutation 函數(shù)改變的,將會(huì)拋出錯(cuò)誤
        strict: process.env.NODE_ENV !== "production",
        state: {
          count: 1,
          msg: "我是msg",
        },
        mutations: {
          // 同步改變count
          increment(state, payload) {
            state.count += payload;
          },
          setMsg(state, payload) {
            state.msg = payload;
          },
        },
        actions: {
          // 異步改變count
          incrementAsync({ commit }, payload) {
            return new Promise((resolve) => {
              setTimeout(() => {
                commit("increment", payload);
                resolve("ODK");
              }, 2000);
            });
          },
        },
        getters: {
          // count的計(jì)算屬性,可以使用其他getters
          countAddHundred({ count }, { countSubHundred }) {
            return count + countSubHundred * 10 + 100;
          },
          countSubHundred(state) {
            return state.count - 100;
          },
          // getters傳參
          countmutiNum({ count }) {
            return (num) => count * num;
          },
        },
      });
      
      export default store;
      
      
      
      // 組件
      <template>
        <div>
          <input v-model="message" />
          <p>{{ msg }}</p>
          <button @click="btnClick">點(diǎn)擊+10</button>
          <p>{{ count }}</p>
          <!-- getters傳參 -->
          <p>{{ countmutiNum(6) }}</p>
        </div>
      </template>
      
      <script>
      // 使用輔助函數(shù),避免每次從$store導(dǎo)出
      import { mapState, mapGetters, mapMutations, mapActions } from "vuex";
      
      export default {
        methods: {
          ...mapMutations(["increment", "setMsg"]),
          ...mapActions(["incrementAsync"]),
          async btnClick() {
            // 分發(fā)一個(gè)異步action,返回的是一個(gè)promise
            const result = await this.incrementAsync(10);
            console.log(result);
          },
        },
        computed: {
          ...mapState(["count", "msg"]),
          ...mapGetters(["countAddHundred", "countSubHundred", "countmutiNum"]),
          // 使用v-model雙向綁定vuex的數(shù)據(jù),需要重寫(xiě)set方法
          message: {
            get() {
              return this.msg;
            },
            set(value) {
              this.setMsg(value);
            },
          },
        },
      };
      </script>
      
      
      

      關(guān)系圖

      思維導(dǎo)圖

      posted @ 2022-08-03 15:10  lupulus  閱讀(181)  評(píng)論(2)    收藏  舉報(bào)
      主站蜘蛛池模板: 在线免费观看视频1区| 中文字幕国产精品第一页| 亚洲av优女天堂熟女久久| 最近中文国语字幕在线播放| 亚洲欧美综合人成在线| 亚洲成av人片天堂网无码| 久久久久久久一线毛片| 日韩乱码人妻无码中文字幕视频| 午夜福利一区二区在线看| 精品一区二区亚洲国产| 成人亚洲av免费在线| 人妻夜夜爽天天爽三区麻豆av| 亚洲AV日韩AV高清在线观看| 国自产在线精品一本无码中文| 青草青草久热国产精品| 国产精品国产亚洲区久久| 象山县| 精品国产乱弄九九99久久| 中文字幕国产精品日韩| 免费现黄频在线观看国产| 日本内射精品一区二区视频| 色噜噜狠狠色综合成人网| 亚洲大尺度无码无码专线| 国产三级无码内射在线看| 一区二区三区在线色视频| 亚洲人妻一区二区精品| 国产福利高颜值在线观看| 无人区码一码二码三码区| 中文字幕在线日韩一区| 精品无码成人久久久久久| 亚洲av成人免费在线| 99福利一区二区视频| 国产综合精品一区二区三区| 久久精品亚洲精品国产色婷| 久久99久久99精品免视看国产成人 | 芷江| 午夜综合网| 纯肉高h啪动漫| 国产综合亚洲区在线观看| 韩国青草无码自慰直播专区| 日本高清视频网站www|