国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue的狀態管理模式vuex

2024-05-06 15:23:56
字體:
來源:轉載
供稿:網友

vuex是一個專門為vue.js設計的狀態管理模式,并且也可以使用devtools進行調試。

備注:本文的示例等代碼將會采用es6的語法。

鏈接

    vuex官方中文網站 使用vue和vuex實現的簡易商城,僅供參考

vuex是什么?

先引用vuex官網的話:

Vuex 是一個專為 Vue.js 應用程序開發的狀態管理模式。它采用集中式存儲管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。

狀態管理模式、集中式存儲管理 一聽就很高大上,蠻嚇人的。在我看來 vuex 就是把需要共享的變量全部存儲在一個對象里面,然后將這個對象放在頂層組件中供其他組件使用。這么說吧,將vue想作是一個js文件、組件是函數,那么vuex就是一個全局變量,只是這個“全局變量”包含了一些特定的規則而已。

在vue的組件化開發中,經常會遇到需要將當前組件的狀態傳遞給其他組件。父子組件通信時,我們通常會采用 props + emit 這種方式。但當通信雙方不是父子組件甚至壓根不存在相關聯系,或者一個狀態需要共享給多個組件時,就會非常麻煩,數據也會相當難維護,這對我們開發來講就很不友好。vuex 這個時候就很實用,不過在使用vuex之后也帶來了更多的概念和框架,需慎重!

vuex里面都有些什么內容?

Talk is cheap,Show me the code. 先來一段代碼間隔下這么多的文字:

const store = new Vuex.Store({  state: {    name: 'weish',    age: 22  },  getters: {    personInfo(state) {      return `My name is ${state.name}, I am ${state.age}`;    }  }  mutations: {    SET_AGE(state, age) {      commit(age, age);    }  },  actions: {    nameAsyn({commit}) {      setTimeout(() => {        commit('SET_AGE', 18);      }, 1000);    }  },  modules: {    a: modulesA  }}

這個就是最基本也是完整的vuex代碼;vuex 包含有五個基本的對象:

    state:存儲狀態。也就是變量; getters:派生狀態。也就是set、get中的get,有兩個可選參數:state、getters分別可以獲取state中的變量和其他的getters。外部調用方式:store.getters.personInfo()。就和vue的computed差不多; mutations:提交狀態修改。也就是set、get中的set,這是vuex中唯一修改state的方式,但不支持異步操作。第一個參數默認是state。外部調用方式:store.commit('SET_AGE', 18)。和vue中的methods類似。 actions:和mutations類似。不過actions支持異步操作。第一個參數默認是和store具有相同參數屬性的對象。外部調用方式:store.dispatch('nameAsyn')。 modules:store的子模塊,內容就相當于是store的一個實例。調用方式和前面介紹的相似,只是要加上當前子模塊名,如:store.a.getters.xxx()。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 历史| 琼海市| 县级市| 琼海市| 宁海县| 固始县| 乌拉特前旗| 临沧市| 常山县| 呼伦贝尔市| 永定县| 威海市| 固阳县| 青冈县| 木里| 两当县| 云安县| 阳朔县| 疏勒县| 嘉义市| 黄大仙区| 铅山县| 信宜市| 孙吴县| 三门县| 石林| 同江市| 马鞍山市| 东光县| 常熟市| 宝鸡市| 双鸭山市| 新龙县| 城步| 浠水县| 阿坝县| 东源县| 丘北县| 寿阳县| 历史| 凉城县|