成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vuex狀態(tài)管理

Blackjun / 1445人閱讀

摘要:一前言本次接受一個系統(tǒng),要求是能夠接入數(shù)據(jù)源得到數(shù)據(jù)集對數(shù)據(jù)集進行處理展現(xiàn)為數(shù)據(jù)的可視化,這一個系統(tǒng)為了接入公司自身的產(chǎn)品,后端技術(shù)采用,前端采用的項目架構(gòu)方式,作為的狀態(tài)管理,是尤為重要的部分。

一、前言

本次接受一個BI系統(tǒng),要求是能夠接入數(shù)據(jù)源-得到數(shù)據(jù)集-對數(shù)據(jù)集進行處理-展現(xiàn)為數(shù)據(jù)的可視化,這一個系統(tǒng)為了接入公司自身的產(chǎn)品,后端技術(shù)采用spring boot,前端采用vue+vuex+axios的項目架構(gòu)方式,vuex作為vue的狀態(tài)管理,是尤為重要的部分。這里,我將vuex如何運作和使用做一次總結(jié),有錯的地方,望多多提點。

二、vuex簡單使用

安裝vuex

cnpm install vuex --save

在src目錄下建立文件夾,命名為store,建立index.js

如圖所示:

在index.js中引入vue和vuex狀態(tài)管理,并導出vuex,代碼如下:

import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
const store = new Vuex.Store({
    state: {
      token: 0
    },
  })
  export default store;

在main.js中引入剛剛創(chuàng)建好的store并作為vue的store

import Vue from "vue"
import App from "./App.vue"
import store from "./store/index"
Vue.config.productionTip = false
new Vue({
  render: h => h(App)
  ,
  store
}).$mount("#app")

獲得store里的token

在vue的組件中,想要獲得vuex里的全局數(shù)據(jù),可以把vue看做一個類,在其下面有許多屬性,其中有我們剛剛注入的vuex,如圖

我們可以看到vue他本身就是一個json,在其下有$store這個對象,而$store下又有state,state下得就是我們存儲在vue中的全局數(shù)據(jù),
在組件中通過this.$store.state.token即可獲得我們的數(shù)據(jù)。

三、vuex的核心概念之getters

有時候我們需要在獲得的數(shù)據(jù)做一些簡單的過濾或者處理的時候,getters就起到作用了。
代碼如下

getters:{
       getToken(state){
          return state.token;
       }

同直接獲取token的方式一樣。getters也已經(jīng)掛載到了$store下,故,我們可以通過this.$store.state.getters.getToken的方式,調(diào)用
其函數(shù)。 但vuex為我們提供了mapGetters能夠?qū)⑵溆成涞綄膅etters的方法上去,用法如下所示

import {mapGetters,mapActions} from "vuex"
export default {
  name: "app",
  components: {
    HelloWorld
  },
  computed:{
    ...mapGetters(["getToken"])
  },
  mounted() {
     console.log(this.getToken)
    console.log(this.$store.getters.getToken)
  
  },
}

映射出來的getters仍然掛載在vue上,如圖所示

四、vuex的核心概念之mutations與actions

我們可以吧mutations理解成一個事件函數(shù),而actions就是觸發(fā)器,通過actions,發(fā)起動作。
簡單實例代碼如下。

  mutations:{
         setToken(state,n){
            state.token=state.token+n;
         }
       },
       actions:{
         setToken({commit},n){
           commit("setToken",n)
         }
       }

在組件中的使用,同getters的用法,
代碼如下

import {mapGetters,mapActions} from "vuex"
export default {
  name: "app",
  components: {
    HelloWorld
  },
  computed:{
    ...mapGetters(["getToken"])
  },
  
  mounted() {

    console.log(this)
    console.log(this.setToken(1))
    console.log(this.getToken)
  
  },methods:{
        ...mapActions(["setToken"])
  },

在vue的json中,同樣可以找到相同的屬性。

五、vuex核心概念之mudules

vuex允許我們將store分為不同的模塊,每個多帶帶的模塊具備getters,state,mutations,actions這四個store核心,

需要注意的是如果在模塊內(nèi)部加入了namesapced:true這一個屬性。在取值的時候需要做一點細微的變動,通過mapGetters火mapActions映射時需要將模塊名作為路勁,來獲得該模塊的getters,和actions,模塊化代碼如下

import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
const moduleA = {
  namespaced:true,
  state: { a:1 },
  mutations: {  },
  actions: {  },
  getters: { geta(state){
    return state.a;
  } }
}

const moduleB = {
  namespaced:true,
  state: { b:1},
  mutations: {  },
  actions: {}
}

const store = new Vuex.Store({ 
 
    state: {
      token: 0
    },
    getters:{
       getToken(state){
          return state.token;
       },
     
    } , mutations:{
      setToken(state,n){
         state.token=state.token+n;
      }
    },
    actions:{
      setToken({commit},n){
        commit("setToken",n)
      }
    },
    modules: {
      a: moduleA,
      b: moduleB
    },
  })
  export default store;

在組件中獲得模塊A的值得時候,我們來看一下geta這個getters屬性,在vue中的狀態(tài),如圖所示

geta為模塊a下得getters屬性,在獲取的時候就需要這樣

 computed:{
    // ...mapGetters(["getToken"])
    ...mapGetters("a",["geta"])
  },
  
  mounted() {

    console.log(this)
    console.log(this.geta)

而如果模塊沒有命令空間的話,vuex會自動將模塊內(nèi)的getters,actions注入為全局的,直接按照原來個獲取方式就可以了。

六、總結(jié)

這是我對vuex的基本用法和基本理解方式,vuex當然不可能局限于此,此處只列舉了最簡單的,做個總結(jié)的同時也等同于記下,據(jù)說vue3塊出了,是用ts重寫的vue,到時再去看看,vue3又有了哪些變化,和哪些可取之處。本文所寫,有不對的地方,大家多多提出來。共同進步。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98890.html

相關(guān)文章

  • vue 狀態(tài)管理(一)

    摘要:在中添加原型屬性通過實現(xiàn)任意組件傳遞參數(shù)在掛載聲明周期函數(shù)中監(jiān)聽自定義事件給傳遞數(shù)據(jù)由觸發(fā)一個事件,在接收數(shù)據(jù)的組件中監(jiān)聽該事件狀態(tài)管理隨著組件的增加,通過以上方式共享數(shù)據(jù),會越來越復雜,提供了狀態(tài)管理插件。 vue 狀態(tài)管理(一) 父子組件之間往往使用props和 $emit 實現(xiàn)數(shù)據(jù)共享,任意組件可通過bus(一個vue實例)作為橋梁,實現(xiàn)數(shù)據(jù)共享。當項目中組件越來越...

    MiracleWong 評論0 收藏0
  • vuex淺入淺出

    摘要:來自不同視圖的行為需要變更同一狀態(tài)。圖解后端的行為,響應在上的用戶輸入導致的狀態(tài)變化。中的非常類似于事件每個都有一個字符串的事件類型和一個回調(diào)函數(shù)。 什么是Vuex? Vuex 是一個專為 Vue.js 應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 Vuex采用和Redux類似的單向數(shù)據(jù)流的方式來管理數(shù)據(jù)。用戶...

    琛h。 評論0 收藏0
  • Vue學習日記(四)——Vue狀態(tài)管理vuex

    摘要:說實在話,我在閱讀文檔的時候,也很難以去理解,甚至覺得沒有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說法就是是一個專為應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 前言 先說句前話,如果不是接觸大型項目,不需要有多個子頁面,不使用vuex也是完全可以的。 說實在話,我在閱讀vuex文檔的時候,也很難以去理解v...

    fai1017 評論0 收藏0
  • Vue學習日記(四)——Vue狀態(tài)管理vuex

    摘要:說實在話,我在閱讀文檔的時候,也很難以去理解,甚至覺得沒有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說法就是是一個專為應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 前言 先說句前話,如果不是接觸大型項目,不需要有多個子頁面,不使用vuex也是完全可以的。 說實在話,我在閱讀vuex文檔的時候,也很難以去理解v...

    zilu 評論0 收藏0
  • Vue學習日記(四)——Vue狀態(tài)管理vuex

    摘要:說實在話,我在閱讀文檔的時候,也很難以去理解,甚至覺得沒有使用它我也可以。介紹那么到底是什么引用官網(wǎng)的說法就是是一個專為應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件的狀態(tài),并以相應的規(guī)則保證狀態(tài)以一種可預測的方式發(fā)生變化。 前言 先說句前話,如果不是接觸大型項目,不需要有多個子頁面,不使用vuex也是完全可以的。 說實在話,我在閱讀vuex文檔的時候,也很難以去理解v...

    fjcgreat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<