最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue?(Vuex)中?store?基本用法

 更新時(shí)間:2023年01月16日 15:36:25   作者:hikktn  
Vuex?是一個(gè)專為?Vue.js?應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化,這篇文章主要介紹了Vue?中?store?基本用法,需要的朋友可以參考下

store是一個(gè)管理狀態(tài),在vuex中使用。

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({

  state: {

    //這里放全局參數(shù)

  },

  mutations: {

    //這里是set方法

  },

 getters: {        //這里是get方法,并且每次打開瀏覽器優(yōu)先執(zhí)行該方法,獲取所有的狀態(tài)   },

  actions: {

    // 處理state的方法體

  },

  modules: {

//這里是我自己理解的是為了給全局變量分組,所以需要寫提前聲明其他store文件,然后引入這里

  }

})

store的執(zhí)行順序:
打開瀏覽器 → getters → 組件調(diào)用actions中的方法 → mutations(設(shè)置state的值) → getters(更新數(shù)據(jù))
接著我直接從一個(gè)國(guó)外的項(xiàng)目,部分代碼拷貝出來(lái),進(jìn)行詳細(xì)解讀。
首先這是一個(gè)組件,有個(gè)點(diǎn)擊click事件。

    onAddRow (data) {
      const initVal = data.map((val, idx) => {
        return {
          colGrid: { span: val },
          isCustom: 'btn-addCol'
        }
      })
      this.addRow(initVal)
    },

接著調(diào)用了actions里的方法,該方法的寫法就很6,那個(gè){}里的東西是由Vuex提供的,只是將Store里的數(shù)據(jù)提了出來(lái)

  addRow ({ commit, state }, reload) {
    let { layoutSections } = state
    let _idx = layoutSections.length
    let _newLaypout = [...layoutSections, reload]
    // 調(diào)用set方法,set全局的state
    commit(types.UPDATE_LAYOUT_SECTIONS, _newLaypout)
    commit(types.UPDATE_ACTIVE_SECTION, _idx)
    commit(types.UPDATE_ACTIVE_PROP, '')
  },

我們直接看Store源碼,就會(huì)發(fā)現(xiàn):

function registerAction (store, type, handler, local) {
  const entry = store._actions[type] || (store._actions[type] = []);
  entry.push(function wrappedActionHandler (payload, cb) {
    // 這里就是主要的參數(shù),我們?nèi)绻胍褂?,就可以在{}里聲明它
    let res = handler.call(store, {
      dispatch: local.dispatch,
      commit: local.commit,
      getters: local.getters,
      state: local.state,
      rootGetters: store.getters,
      rootState: store.state
    }, payload, cb);
    if (!isPromise(res)) {
      res = Promise.resolve(res);
    }
    if (store._devtoolHook) {
      return res.catch(err => {
        store._devtoolHook.emit('vuex:error', err);
        throw err
      })
    } else {
      return res
    }
  });
}

通過(guò)debug

我們可以看到這個(gè)方法已經(jīng)被編譯成了這個(gè)樣子,但是第一個(gè)參數(shù),擁有的屬性,就是上面源碼中的參數(shù)。

這個(gè)方法傳過(guò)來(lái)的值

接著,調(diào)用下面三個(gè)方法

上面的意思相當(dāng)于

this.$store.commit('setDemoValue', value);    

就會(huì)調(diào)用mutations的set方法

  [types.UPDATE_LAYOUT_SECTIONS] (state, load) {
    state.layoutSections = load
  },
  [types.UPDATE_ACTIVE_SECTION] (state, load) {
    state.activeSection = load
  },
  [types.UPDATE_ACTIVE_PROP] (state, load) {
    state.activeProp = load
  },

調(diào)用完成后,執(zhí)行g(shù)etters更新狀態(tài)

activeRow (state) {
    debugger
    let { layoutSections, activeSection } = state
    return layoutSections[activeSection] || []
  }

小結(jié)

vue里store的用法是什么

Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。

每一個(gè) Vuex 應(yīng)用的核心就是 store(倉(cāng)庫(kù))。“store”基本上就是一個(gè)容器,它包含著你的應(yīng)用中大部分的狀態(tài) (state)。Vuex 和單純的全局對(duì)象有以下兩點(diǎn)不同:

Vuex 的狀態(tài)存儲(chǔ)是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時(shí)候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會(huì)相應(yīng)地得到高效更新。

你不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個(gè)狀態(tài)的變化,從而讓我們能夠?qū)崿F(xiàn)一些工具幫助我們更好地了解我們的應(yīng)用。

到此這篇關(guān)于Vue 中 store 基本用法的文章就介紹到這了,更多相關(guān)Vue store 用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js用法詳解

    Vue.js用法詳解

    Vue.js(讀音 /vjuː/, 類似于 view) 是一套構(gòu)建用戶界面的漸進(jìn)式框架。這篇文章主要介紹了Vue.js用法詳解,需要的朋友可以參考下
    2017-11-11
  • vue+electron 自動(dòng)更新的實(shí)現(xiàn)代碼

    vue+electron 自動(dòng)更新的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue+electron 自動(dòng)更新的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • Vue2項(xiàng)目升級(jí)到Vue3的詳細(xì)教程

    Vue2項(xiàng)目升級(jí)到Vue3的詳細(xì)教程

    看到好多開源項(xiàng)目都升級(jí)了vue3,下面這篇文章主要給大家介紹了關(guān)于Vue2項(xiàng)目升級(jí)到Vue3的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Vue正則表達(dá)式限制input的輸入范圍

    Vue正則表達(dá)式限制input的輸入范圍

    我們有時(shí)需要限制文本框輸入內(nèi)容的類型,本節(jié)分享下正則表達(dá)式限制文本框只能輸入數(shù)字、小數(shù)點(diǎn)、英文字母、漢字等代碼,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • vue列表自動(dòng)滾動(dòng)實(shí)例

    vue列表自動(dòng)滾動(dòng)實(shí)例

    這篇文章主要介紹了vue列表自動(dòng)滾動(dòng)實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue+element_ui上傳文件,并傳遞額外參數(shù)操作

    vue+element_ui上傳文件,并傳遞額外參數(shù)操作

    這篇文章主要介紹了vue+element_ui上傳文件,并傳遞額外參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • vue 解決computed修改data數(shù)據(jù)的問題

    vue 解決computed修改data數(shù)據(jù)的問題

    今天小編就為大家分享一篇vue 解決computed修改data數(shù)據(jù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫css

    詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫css

    這篇文章主要介紹了詳解在vue-cli中引用jQuery、bootstrap以及使用sass、less編寫css,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue實(shí)現(xiàn)下拉加載更多

    Vue實(shí)現(xiàn)下拉加載更多

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)下拉加載更多,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • vue項(xiàng)目如何分環(huán)境部署

    vue項(xiàng)目如何分環(huán)境部署

    這篇文章主要介紹了vue項(xiàng)目如何分環(huán)境部署問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2018-12-12

最新評(píng)論

木兰县| 青阳县| 济源市| 平度市| 乌拉特后旗| 永善县| 麟游县| 鲁山县| 任丘市| 宁都县| 来宾市| 庆城县| 志丹县| 南雄市| 吴川市| 五寨县| 房山区| 疏勒县| 肇庆市| 上饶县| 旺苍县| 仙游县| 苍溪县| 松滋市| 开江县| 河曲县| 新建县| 和田市| 墨竹工卡县| 视频| 华坪县| 浮山县| 奉化市| 通城县| 泽库县| 土默特左旗| 正定县| 子洲县| 什邡市| 屯门区| 德令哈市|