国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue中vuex的五個屬性和基本用法,另加js-cookie的使用

這篇具有很好參考價值的文章主要介紹了vue中vuex的五個屬性和基本用法,另加js-cookie的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

vue中vuex的五個屬性和基本用法,另加js-cookie的使用,vue.js,前端,javascript

vue中vuex的五個屬性和基本用法,另加js-cookie的使用,vue.js,前端,javascript

VueX 是一個專門為 Vue.js 應(yīng)用設(shè)計的狀態(tài)管理構(gòu)架,統(tǒng)一管理和維護(hù)各個vue組件的可變化狀態(tài)(你可以理解成 vue 組件里的某些 data )。

Vuex有五個核心概念:

state, getters, mutations, actions, modules。

1. state:

vuex的基本數(shù)據(jù),用來存儲變量

2. geeter:

從基本數(shù)據(jù)(state)派生的數(shù)據(jù),相當(dāng)于state的計算屬性

3. mutation:

提交更新數(shù)據(jù)的方法,必須是同步的(如果需要異步使用action)。每個 mutation 都有一個字符串的 事件類型 (type) 和 一個 回調(diào)函數(shù) (handler)。

回調(diào)函數(shù)就是我們實際進(jìn)行狀態(tài)更改的地方,并且它會接受 state 作為第一個參數(shù),提交載荷作為第二個參數(shù)。

commit:同步操作,寫法:this.$store.commit('mutations方法名',值)

如:this.$store.commit('SET_PASSWORD',data.Password)

4. action:

和mutation的功能大致相同,不同之處在于 ==》1. Action 提交的是 mutation,而不是直接變更狀態(tài)。 2. Action 可以包含任意異步操作。

dispatch:異步操作,寫法:this.$store.dispatch('actions方法名',值)

如:this.$store.dispatch('login',res.data)文章來源地址http://www.zghlxwxcb.cn/news/detail-634672.html

5. modules:

模塊化vuex,可以讓每一個模塊擁有自己的state、mutation、action、getters,使得結(jié)構(gòu)非常清晰,方便管理。

Vuex的用法:

文件夾步驟及引入與掛載

在vue項目的src文件下創(chuàng)建store文件夾(如果已經(jīng)安裝好了vuex的話),然后在store文件夾中創(chuàng)建index.js和getters.js文件與Modules文件夾

在項目的main.js中引入 和掛載

import store from './store'

let vue = new Vue({

router,

store,

render: (h) => h(App),

}).$mount("#app");

store文件下的index.js

//store文件下的index.js
import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import bankCard from './Modules/bankCard'
import user from './Modules/user'

Vue.use(Vuex)

export default new Vuex.Store({
  getters,
  modules: {
    bankCard,
    user
  }
})

store文件下的getters.js

//store文件下的getters.js
const getters = {
  bankCards: state => state.bankCard.bankCards,
  selectBankCards: state => state.bankCard.selectBankCards,
  token: state => state.user.token
}
export default getters

在modules文件夾下創(chuàng)建一個user.js文件,user.js內(nèi)容:


import { setToken, removeToken } from '@/utils/auth'
import { getLogin } from '@/api/login'

const user = {
  state: {
    name: '',
    roles: [],
    permissions: [],
    token: undefined,
    // Password:'',
  },

  mutations: {
    /*
    commit:同步操作,寫法:this.$store.commit('mutations方法名',值)
    如:this.$store.commit('SET_PASSWORD',data.Password)
    */
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
    },
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions
    },
    // SET_PASSWORD:(state,Password)=>{
    //   state.Password=Password
    // }
  },

  actions: {
    /*
    dispatch:異步操作,寫法:this.$store.dispatch('actions方法名',值)
    如:this.$store.dispatch('login',res.data)
    */
    // 登錄
    Login({ commit }, userInfo) {
      return new Promise((resolve) => {
        const { email, password } = userInfo
        getLogin({ email, password }).then(res => {
          const analysis = JSON.parse(atob(res.data.split('.')[1]))
          setToken('token', res.data)
          setToken('userId', analysis.userId)
          setToken('email', email)
          setToken('password', password)

          commit('SET_TOKEN', res.data)
          setToken('Admin-Token', res.data)  
          resolve()
        })
      })
    },

    // 獲取用戶信息
    GetInfo({ commit }) {
      return new Promise((resolve) => {
        commit('SET_PERMISSIONS', [1])
        commit('SET_ROLES', ['ROLE_DEFAULT'])
        resolve()
        // getInfo({token: sessionStorage.getItem('JWT')})
        //  .then(result => {
        //   const res = result.data;
        //   const userName = res.userName;
        //   if (res.permissionCodeList 
        //      && res.permissionCodeList.length > 0) 
        //   { // 驗證返回的roles是否是一個非空數(shù)組
        //     commit("SET_PERMISSIONS", res.permissionCodeList);
        //   } else {
        //     commit("SET_ROLES", ["ROLE_DEFAULT"]);
        //   }
        //   commit("SET_NAME", userName);
        //   resolve(res);
        // }).catch(error => {
        //   reject(error);
        // });
      })
    },

    // 退出系統(tǒng)
    // LogOut({ commit, state }) {
    //   return new Promise((resolve, reject) => {
    // logout(state.token).then(() => {
    //   commit('SET_TOKEN', '')
    //   commit('SET_ROLES', [])
    //   commit('SET_PERMISSIONS', [])
    //   removeToken()
    //   resolve()
    // }).catch(error => {
    //   reject(error)
    // })
    // })
    // },

    // 前端 登出
    FedLogOut({ commit }) {
      return new Promise(resolve => {
        commit('SET_TOKEN', '')
        removeToken('Admin-Token')
        removeToken('token')
        removeToken('password')
        removeToken('email')
        removeToken('userId')
        resolve()
      })
    }
  }
}

export default user
另:安裝js-cookie :

1、方式一:在你的工程項目中使用npm進(jìn)行安裝

 npm install js-cookie --save

2、方式二:直接使用cdn資源

<script 
    src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js">
</script>

3、方式三:本地下載js-cookie的文件,然后進(jìn)行項目script標(biāo)簽引入:

<script src="/path/to/js.cookie.js"></script>

src 文件夾下utils文件夾下auth.js內(nèi)容:

//直接拋出,使用的時候直接引入 
//如:import { setToken, removeToken } from '@/utils/auth'
import Cookies from 'js-cookie'

// 60秒 * 60分鐘 * 24小時
function expires(seconds = 60 * 60 * 24) {
  return new Date(new Date() * 1 + seconds * 1000)
}

export function getToken(TokenKey) {
  return Cookies.get(TokenKey)
}

export function setToken(TokenKey, token, seconds) {
  return Cookies.set(TokenKey, token, { expires: expires(seconds) })
}

export function removeToken(TokenKey) {
  return Cookies.remove(TokenKey)
}

使用

//點擊登錄
getLogin(){
            this.$store.dispatch('Login', {
               email: this.data.Email, password: this.data.Password 
            }).then(() => {
              this.$router.push({ path: this.redirect || '/Home' })
                .catch(() => {
              })
            })
         },
//點擊退出           
logOut(){
        this.$store.dispatch('FedLogOut')
        this.$router.push({path:"/"})
      },

使用下面這兩種方法存儲數(shù)據(jù):

commit:同步操作,寫法:this.$store.commit('mutations方法名',值)

如:this.$store.commit('SET_PASSWORD',data.Password)

dispatch:異步操作,寫法:this.$store.dispatch('actions方法名',值)

如:this.$store.dispatch('login',res.data)

到了這里,關(guān)于vue中vuex的五個屬性和基本用法,另加js-cookie的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vuex 的基本用法

    vuex 的基本用法

    Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用 集中式存儲管理 應(yīng)用的所有組件的狀態(tài), 這個狀態(tài)管理應(yīng)用包含以下幾個部分: state,驅(qū)動應(yīng)用的數(shù)據(jù)源; view,以聲明方式將 state 映射到視圖; actions,響應(yīng)在 view 上的用戶輸入導(dǎo)致的狀態(tài)變化。 給出一張官方的

    2024年02月11日
    瀏覽(19)
  • STM32的五個時鐘源

    STM32的五個時鐘源

    ①HSI是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz。 ? ②HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。 ③LSI是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz。 ④LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。 ⑤PLL為鎖相環(huán)倍頻輸出,其時鐘輸入源

    2024年02月11日
    瀏覽(12)
  • 【MySQL】常用的五個聚合函數(shù)

    聚合函數(shù) ,也稱聚集函數(shù)或分組函數(shù),它是 對一組數(shù)據(jù)進(jìn)行匯總 的函數(shù),輸入的是一組數(shù)據(jù)的集合,輸出的是單個值。 AVG() :求平均值 SUM() 求總和 MAX() :求最大值 MIN() :求最小值 COUNT() :求個數(shù) 3.1 AVG() / SUM() 適用于數(shù)值類型。 如:查詢員工表的平均工資 操作對象的數(shù)據(jù)

    2024年02月15日
    瀏覽(19)
  • 防火墻的五個主要功能

    防火墻的五個主要功能 1、網(wǎng)絡(luò)安全的保障 一個防火墻(作為阻塞點、控制點)能極大地提高一個內(nèi)部網(wǎng)絡(luò)的安全性,并通過過濾不安全的服務(wù)而降低風(fēng)險。由于只有經(jīng)過精心選擇的應(yīng)用協(xié)議才能通過防火墻,所以網(wǎng)絡(luò)環(huán)境變得更安全。 如防火墻可以禁止諸如眾所周知的不安

    2024年02月09日
    瀏覽(21)
  • 提升云計算安全的五個策略

    提升云計算安全的五個策略

    攜手創(chuàng)作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰(zhàn)」的第4天,點擊查看活動詳情 如何提升多云安全,這篇文章提供五個策略! 如果你使用多個云的可用性,你需要確保你在所有的云中使用相同的安全設(shè)置。你可以使用自動化工具來同步供應(yīng)商之間的策略和設(shè)

    2024年02月16日
    瀏覽(14)
  • ADC前端電路的五個設(shè)計步驟

    ADC前端電路的五個設(shè)計步驟

    現(xiàn)代通信系統(tǒng)和測試設(shè)備常常需要盡快地將模擬信號數(shù)字化,以便在數(shù)字域中完成信號處理。但是,為模數(shù)轉(zhuǎn)換器(ADC)設(shè)計變壓器前端電路很有挑戰(zhàn)性,特別是在高中頻(IF)的系統(tǒng)中。本文總結(jié)了5個設(shè)計步驟,以幫助開發(fā)出的ADC前端。這5個步驟包括:1. 了解系統(tǒng)和設(shè)計要求;

    2024年02月05日
    瀏覽(19)
  • 交易之路:從無知到有知的五個階段

    交易之路:從無知到有知的五個階段

    交易是易學(xué)的,它的操作很直觀,也是復(fù)雜的,它的價格很玄妙。 在金融行業(yè)日益壯大的背景下,新人輩出,而弱者則逐漸退出。市場生態(tài)在不斷變化,我們每個人在交易之路上所經(jīng)歷的種種,既清晰可見又模糊難辨。那么,面對這樣的生存之道,我們應(yīng)該如何看待并堅持下

    2024年02月21日
    瀏覽(19)
  • 建立人力資源運營團隊的五個步驟

    建立人力資源運營團隊的五個步驟

    作為小企業(yè)主,設(shè)置人力資源運營可能不是您的首要任務(wù)。但是,隨著您擴大運營規(guī)模和員工人數(shù),您可能會遇到合規(guī)性和員工敬業(yè)度問題,從而阻礙您的業(yè)務(wù)增長。組建一個團隊來照顧您的人力資源運營和員工可以讓您專注于改進(jìn)您的產(chǎn)品和滿足客戶需求。 ?如果您是希望

    2023年04月18日
    瀏覽(17)
  • 關(guān)于邊緣計算的五個實用案例與優(yōu)勢

    關(guān)于邊緣計算的五個實用案例與優(yōu)勢

    在數(shù)據(jù)傳輸、實時應(yīng)用和低延遲需求的推動,邊緣計算和云計算已經(jīng)逐漸取代了傳統(tǒng)的計算機架構(gòu)模式。邊緣計算作為云計算的延申,是在邊緣側(cè)布置數(shù)據(jù)計算功能,篩選過濾數(shù)據(jù),從而達(dá)到降低延遲、提高性能的作用,其作用是拉近用戶設(shè)備與數(shù)據(jù)的距離。 邊緣計算的四個

    2024年01月21日
    瀏覽(21)
  • 人工智能在農(nóng)業(yè)領(lǐng)域的五個應(yīng)用案例

    隨著科技的進(jìn)步,人工智能(Artificial Intelligence,AI)正逐漸滲透到各個行業(yè)中,其中包括農(nóng)業(yè)領(lǐng)域。本文介紹人工智能在農(nóng)業(yè)領(lǐng)域的五個應(yīng)用案例,以期幫助大家更好地了解這個新興技術(shù)在農(nóng)業(yè)中的價值和作用。 ?? ?? 人工智能技術(shù)可以應(yīng)用于農(nóng)機,使其具備自主感知、

    2024年02月03日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包