vuex是集中式狀態(tài)數(shù)據(jù)管理工具,它里面的不論是mutations定義的初始化數(shù)據(jù)或是action接收的異步數(shù)據(jù)都可以映射到組件當(dāng)中熏挎,方便了組件間的數(shù)據(jù)共享,組件間的數(shù)據(jù)不再像父傳子夭谤,子傳父這樣單一港粱。
配置vuex需要引入vue,下載vuex并導(dǎo)入。使用vue.use來使用vuex呕臂。創(chuàng)建vuex存儲對象破托,里面包含state、mutaitions歧蒋、actions土砂、getters,modules。
1. state可看作一個容器,它里面的數(shù)據(jù)是要被mutations初始化的疏尿,將來要渲染到頁面上的也是他里面的數(shù)據(jù)瘟芝,值得注意的是如果我們啟用了modules模塊化就不能正常那樣通過輔助方法拿到某個數(shù)組了。
2. mutations方法是對數(shù)據(jù)的增加刪除和修改褥琐,他里面的方法第一個參數(shù)就是state锌俱,第二個參數(shù)是需要的index、id敌呈,或者name(我們要修改所需要的額外參數(shù))贸宏。
3. actions可操作異步數(shù)據(jù)造寝,其實就是處理接口實現(xiàn)在數(shù)據(jù)庫的增刪改。mutations操作的數(shù)據(jù)只能實現(xiàn)頁面效果吭练,頁面刷新之后诫龙,刪除或修改的數(shù)據(jù)是會回來的,因為他沒有在數(shù)據(jù)庫發(fā)生改變鲫咽,只是實現(xiàn)了當(dāng)前頁面的刷新签赃。
其次,如何在actions里觸發(fā)mutations方法分尸。在組件當(dāng)中我們以this.$store.commit()觸發(fā)mutations里的方法锦聊,在actions當(dāng)中,他的方法有一個系統(tǒng)自動注入的config箩绍,這個config就有commit孔庭,那么我們在actions當(dāng)中可以使用config.commit觸發(fā)mutations里的方法來實現(xiàn)頁面刷新。
actions操作數(shù)據(jù)庫內(nèi)的數(shù)據(jù)通過接口即可完成材蛛,值得注意的是需要傳遞一些需要的參數(shù)圆到,而后我們調(diào)用commit觸發(fā)mutations實現(xiàn)頁面刷新。
補充一點卑吭,不用每次使用config.commit調(diào)用mutations芽淡,在actions的方法中是可以? BrandUpdate({commit},其他參數(shù)){} ,直接解構(gòu)取得的陨簇。
4. getters類似于vue中的計算屬性吐绵。
5.modules是vuex模塊化工具,目的是為了是主包更簡潔河绽,更加細化的文件方便后期維護己单。
后面補充
二? 在組件中使用vuex可以直接在created中this.$store.commit() 、this.$store.dispatch()耙饰,也可引入vuex輔助方法纹笼,state和getters在computed中調(diào)用?而后當(dāng)作組件自己的計算屬性使用苟跪。mutations和actions在methods中調(diào)用廷痘,而后當(dāng)作自己的方法使用。一般這四種方法都使用...mapState['名字']件已,mapMutations['方法名']解構(gòu)的方式笋额。
未完待續(xù)...