整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          一看就會的vuex實現(xiàn)登錄驗證(附案例)

          一、vuex是啥?

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

          簡單來說,Vuex 類似 Redux 的狀態(tài)管理器,用來管理Vue的所有組件狀態(tài)。

          當(dāng)你打算開發(fā)大型單頁應(yīng)用(SPA),會出現(xiàn)多個視圖組件依賴同一個狀態(tài),來自不同視圖的行為需要變更同一個狀態(tài)。

          遇到以上情況時候,你就應(yīng)該考慮使用Vuex了,它能把組件的共享狀態(tài)抽取出來,當(dāng)做一個全局單例模式進行管理。這樣不管你在何處改變狀態(tài),都會通知使用該狀態(tài)的組件做出相應(yīng)修改。

          vuex大體分為如下幾部分:

          二、vuex使用

          1.首先創(chuàng)建一個vue-cli項目,這里不詳述。

          vue init webpack mylogin

          2.安裝vuex:

          npm install vuex --save

          3.在src目錄下新建文件夾store,用來存放vuex內(nèi)容

          目錄結(jié)構(gòu)如下:

          4.在main.js中引入vuex

          import Vuex from 'vuex'
          import store from './store'
          Vue.use(Vuex)

          5.在store文件夾下新建state.js,vuex用來存儲數(shù)據(jù)

          內(nèi)容如下:

          const state={
              userInfo:''
          }
          export default state;

          用來保存用戶信息,根據(jù)是否有值來判斷跳轉(zhuǎn)頁面。

          6.在store文件夾下新建.js,用來修改vuex中存儲的數(shù)據(jù)

          內(nèi)容如下:

          const mutations={
              login(state,v){
                  state.userInfo=v;
              }
          }
          export default mutations;

          7.在store文件夾下新建index.js,用來初始化vuex

          內(nèi)容如下:

          import Vue from 'vue'
          import Vuex from 'vuex'
          import state from './state'
          import mutations from './multation'
          Vue.use(Vuex);
          const store =new Vuex.Store({
              state,
              mutations
          })
          export default store;

          此時在瀏覽器中就可以看到如下(瀏覽器需增加插件vue ):

          8.本項目界面如下

          主頁面和登陸頁面

          9.login.vue提交方法如下:

          submitBtn(){
              let me=this;
              if(!me.user.username||!me.user.pwd){
                  alert("用戶名或密碼不能為空");
              }
              else {
                  this.$store.commit('login',this.user);
                  this.$router.push('./');
              }
          }

          通過commit實現(xiàn)執(zhí)行里剛才定義的login方法。即當(dāng)點擊登陸時state中的已經(jīng)被賦值。接下來通過判斷此字段是否有值來進行頁面跳轉(zhuǎn)。

          10.在main.js用router.方法對vuex中的進行判斷

          router.beforeEach(function(to,from,next){
              if(store.state.userInfo||to.path==='/login'){
                next();
              }
              else {
                next({path:'/login'})
              }
          })

          效果圖:

          登陸后:

          案例地址:

          將不斷更新完善,期待您的批評指正!


          主站蜘蛛池模板: 东京热无码av一区二区| 无码一区二区三区亚洲人妻| 中文字幕一区二区三区人妻少妇| 一区一区三区产品乱码| 中文字幕日韩一区二区三区不| 一区二区亚洲精品精华液| 日韩一区二区电影| 久久精品国产一区二区| 无码一区二区三区亚洲人妻| 激情亚洲一区国产精品| 夜夜添无码一区二区三区| 亚洲中文字幕丝袜制服一区 | 一区二区三区四区视频在线| 日本免费一区二区在线观看 | 欧洲精品一区二区三区在线观看 | 精品无码人妻一区二区三区品 | 一区二区高清在线| 精品视频午夜一区二区| 亚洲av无码一区二区三区人妖 | 亚洲AV香蕉一区区二区三区| 亚洲国产情侣一区二区三区| 中文字幕精品一区二区精品| 一区二区三区四区视频在线| 欲色影视天天一区二区三区色香欲| 日本福利一区二区| 精品女同一区二区三区免费播放 | 一区二区三区在线|欧| 久久精品国产一区二区三区肥胖| 久久精品无码一区二区app| 亚洲乱码国产一区网址| 国产一区二区精品久久凹凸| 国产天堂一区二区综合| 国产在线观看一区精品| 国产丝袜美女一区二区三区| 日韩免费视频一区二区| 97人妻无码一区二区精品免费| av无码免费一区二区三区| 国产一区二区三区播放心情潘金莲| 久久久久久人妻一区二区三区| 国产成人一区二区三区高清 | 精品亚洲av无码一区二区柚蜜|