亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vuex進階知識點鞏固

2019-11-19 13:48:52
字體:
來源:轉載
供稿:網友

一、 Getter

我們先回憶一下上一篇的代碼

computed:{  getName(){   return this.$store.state.name  }}

這里假設現在邏輯有變,我們最終期望得到的數據(getName),是基于 this.$store.state.name 上經過復雜計算得來的,剛好這個getName要在好多個地方使用,那么我們就得復制好幾份.

vuex 給我們提供了 getter,請看代碼 (文件位置 /src/store/index.js)

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ // 類似 vue 的 data state: {  name: 'oldName' }, // 類似 vue 的 computed -----------------以下5行為新增 getters:{  getReverseName: state => {    return state.name.split('').reverse().join('')  } }, // 類似 vue 里的 mothods(同步方法) mutations: {  updateName (state) {   state.name = 'newName'  } }})

然后我們可以這樣用 文件位置 /src/main.js

computed:{  getName(){   return this.$store.getters.getReverseName  }}

事實上, getter 不止單單起到封裝的作用,它還跟vue的computed屬性一樣,會緩存結果數據, 只有當依賴改變的時候,才要重新計算.

二、 actions和$dispatch

細心的你,一定發現我之前代碼里 mutations 頭上的注釋了 類似 vue 里的 mothods(同步方法)

為什么要在 methods 后面備注是同步方法呢? mutation只能是同步的函數,只能是同步的函數,只能是同步的函數!! 請看vuex的解釋:

現在想象,我們正在 debug 一個 app 并且觀察 devtool 中的 mutation 日志。每一條 mutation 被記錄, devtools 都需要捕捉到前一狀態和后一狀態的快照。然而,在上面的例子中 mutation 中的異步函數中的回調讓這不 可能完成:因為當 mutation 觸發的時候,回調函數還沒有被調用,devtools 不知道什么時候回調函數實際上被調 用――實質上任何在回調函數中進行的狀態的改變都是不可追蹤的。
那么如果我們想觸發一個異步的操作呢? 答案是: action + $dispatch, 我們繼續修改store/index.js下面的代碼

文件位置 /src/store/index.js

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ // 類似 vue 的 data state: {  name: 'oldName' }, // 類似 vue 的 computed getters:{  getReverseName: state => {    return state.name.split('').reverse().join('')  } }, // 類似 vue 里的 mothods(同步方法) mutations: {  updateName (state) {   state.name = 'newName'  } }, // 類似 vue 里的 mothods(異步方法) -------- 以下7行為新增 actions: {  updateNameAsync ({ commit }) {   setTimeout(() => {    commit('updateName')   }, 1000)  } }})

然后我們可以再我們的vue頁面里面這樣使用

methods: {  rename () {    this.$store.dispatch('updateNameAsync')  }}

三、 Module 模塊化

當項目越來越大的時候,單個 store 文件,肯定不是我們想要的, 所以就有了模塊化. 假設 src/store 目錄下有這2個文件

moduleA.js

export default {  state: { ... },  getters: { ... },  mutations: { ... },  actions: { ... }}

moduleB.js

export default {  state: { ... },  getters: { ... },  mutations: { ... },  actions: { ... }}

那么我們可以把 index.js 改成這樣

import moduleA from './moduleA'import moduleB from './moduleB'export default new Vuex.Store({  modules: {    moduleA,    moduleB  }})

這樣我們就可以很輕松的把一個store拆分成多個.

四、 總結

  1. actions 的參數是 store 對象,而 getters 和 mutations 的參數是 state .
  2. actions 和 mutations 還可以傳第二個參數,具體看vuex官方文檔
  3. getters/mutations/actions 都有對應的map,如: mapGetters , 具體看vuex官方文檔
  4. 模塊內部如果怕有命名沖突的話,可以使用命名空間, 具體看vuex官方文檔
  5. vuex 其實跟 vue 非常像,有data(state),methods(mutations,actions),computed(getters),還能模塊化.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩免费看aⅴ视频| 欧美日韩国产中字| 这里只有视频精品| 69av视频在线播放| 国产精品电影久久久久电影网| 国产成一区二区| 91精品啪aⅴ在线观看国产| 国产精品视频不卡| 97在线精品视频| 国产三级精品网站| 欧美在线xxx| 日韩av最新在线观看| 菠萝蜜影院一区二区免费| 九九九久久久久久| 亚洲精品国产品国语在线| 综合136福利视频在线| 国产精品第一页在线| 欧洲日本亚洲国产区| 国产亚洲人成网站在线观看| 精品福利在线观看| 欧美电影免费观看电视剧大全| 国产中文字幕日韩| 欧美精品福利视频| 国产一区二区三区在线播放免费观看| 亚洲va欧美va国产综合久久| 国产一区二区黑人欧美xxxx| 成人久久精品视频| 亚洲美女在线视频| 97精品一区二区三区| 日本韩国在线不卡| 日韩电影中文字幕| 136fldh精品导航福利| 日本国产一区二区三区| 日韩美女视频在线观看| 成人免费大片黄在线播放| 激情懂色av一区av二区av| 91在线无精精品一区二区| 久久久精品视频在线观看| 日韩欧美在线视频免费观看| 欧美最猛黑人xxxx黑人猛叫黄| 日韩美女视频中文字幕| 好吊成人免视频| 日韩av在线网站| 爱福利视频一区| 亚洲国产高清自拍| 中文在线不卡视频| 亚洲欧美日韩国产中文| 欧美精品久久久久久久久| 国产精品一二三视频| 日韩亚洲精品电影| 欧美在线精品免播放器视频| 色妞在线综合亚洲欧美| 久久久久国产精品免费网站| 欧美日韩一区免费| 国产精欧美一区二区三区| 国产精品一区电影| 色综合伊人色综合网站| 亚洲大胆美女视频| 国产精品久久激情| 亚洲欧美日韩一区在线| 欧美日韩国产色视频| 91久久久久久| 色偷偷av一区二区三区| 欧美在线视频观看| 国产婷婷色综合av蜜臀av| 在线精品视频视频中文字幕| 成人免费福利视频| 国产精品xxx视频| 亚洲色图校园春色| 色妞在线综合亚洲欧美| 日韩人体视频一二区| 国产日韩欧美电影在线观看| 韩国v欧美v日本v亚洲| 91免费在线视频| 一区二区三区回区在观看免费视频| 国产精品视频一区二区三区四| 成人黄色影片在线| 欧美成人中文字幕| 欧美精品免费看| 亚洲国产91精品在线观看| 日韩免费中文字幕| 亚洲另类激情图| 欧美亚洲第一区| 欧美整片在线观看| 热99在线视频| 欧美亚洲免费电影| 成人激情在线播放| 久久久av网站| 精品日本美女福利在线观看| 亚洲精品乱码久久久久久金桔影视| 日韩av免费在线播放| 国产精品美女主播| 精品福利在线观看| 亚洲女人被黑人巨大进入| 久久精品99久久久香蕉| 亚洲精品欧美日韩专区| 国产成人精品a视频一区www| 国产成人亚洲综合91| 国产日韩综合一区二区性色av| 亚洲欧美一区二区三区久久| 日韩中文字幕在线视频| 欧美成人精品一区二区三区| 57pao国产成人免费| 亚洲精品欧美极品| 插插插亚洲综合网| 欧美性xxxx极品hd欧美风情| 欧美激情三级免费| 国产精品91在线| 日韩av在线资源| 欧美日本中文字幕| 精品免费在线观看| 久久久人成影片一区二区三区观看| 久久人人爽人人爽人人片av高清| 中文字幕精品久久| 亚洲色图五月天| 亚洲国产三级网| 97超级碰在线看视频免费在线看| 欧美日韩国产限制| 精品中文字幕在线2019| 国产一区二区在线免费| 日韩久久精品成人| 国产精品激情av电影在线观看| 国产精品毛片a∨一区二区三区|国| 欧美激情videos| 九九热这里只有精品免费看| 国产欧美在线看| 欧美日本高清一区| 92版电视剧仙鹤神针在线观看| 97在线免费观看视频| 欧美成人国产va精品日本一级| 午夜欧美大片免费观看| 国产精品美女无圣光视频| 亚洲国产成人精品久久| 欧美日韩高清区| xxx欧美精品| 国产精品视频中文字幕91| 国产精品久久综合av爱欲tv| 日韩在线免费av| 国产免费一区视频观看免费| 91精品国产91久久| 国产成人jvid在线播放| 久久久91精品| 亚洲国产欧美一区二区丝袜黑人| 久久久久这里只有精品| 亚洲xxx视频| 成人在线国产精品| 亚洲午夜色婷婷在线| 亚洲精品一二区| 亚洲一品av免费观看| 国产91精品在线播放| 成人黄色免费片| 97香蕉超级碰碰久久免费软件| 亚洲国产一区二区三区四区| 日韩在线视频观看| 久久久女人电视剧免费播放下载| 国产精品久久久久不卡| 亚洲一区国产精品| 国产精品视频一区国模私拍| zzijzzij亚洲日本成熟少妇| 国产精品第3页| 欧美性生交大片免网| 中文字幕日本欧美| 日韩亚洲精品电影| 91精品久久久久久久久青青|