關(guān)于vuex心得

之前使用vuex都是迷迷糊糊的,今天從新縷了一遍

1.安裝用npm 后面要加上 --save 因?yàn)檫@個(gè)vuex包后面成產(chǎn)環(huán)境也要用.
2.在src文件夾下新建一個(gè)文件夾,起個(gè)名字,比如"vuex"或者"store"之類的
3.然后在文件夾下建一個(gè)js文件,叫store.js或者index.js都行
4.在文件里面,用improt引入vuex和vue,然后用Vue.use()引用

import Vuex from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

5.在min.js中用import引入,并在下面的實(shí)例化vue對(duì)象的時(shí)候加入

import store from './store/index'

new Vue({
  el: '#app',
  router,
  store,        //<--這里
  components: { App },
  template: '<App/>'
})

下面說下項(xiàng)目中的應(yīng)用

直接上代碼,看注釋

index.js

//之前說的引入
import Vuex from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

//增加常量對(duì)象
const state = {
  loginName: '',
  loginState: -1
}

//下面是方法 
//這里的 mutations 是固定的寫法,意思是改變的,
//所以先不用著急,只知道我們要改變 state 的數(shù)值的方法,
//必須寫在 mutations 里就可以了。
//必須寫在 mutations 里就可以了。
//必須寫在 mutations 里就可以了。
const mutations = {
  changeLogin(state,status){
    state.loginState = status;
  },
  updLoginName (state, name) {
    state.loginName = name
  }
}

//actions 和上前講的 Mutations 功能基本一樣
//不同點(diǎn)是,actions 是異步的改變 state 狀態(tài),而 Mutations 是同步改變狀態(tài)。
//actions 是可以調(diào)用 Mutations 里的方法的
const actions = {
  loginAction({commit},y){
    commit('changeLogin',y);
  },
  updLoginName({ commit }, x){
    commit('updLoginName', x)
  }
}

export default new Vuex.Store({
  state,
  mutations,
  actions
})

vue組件1 -- 傳入/修改

import { mapActions } from 'vuex' //引入
function load(vue) {
    let that = this
    C.call('getUserInfo', {}).then(function (d) {
      vue.userName = d.userName;
      vue.status = d.status;
      vue.updLoginName(vue.userName);      //給vuex傳入用戶名
      vue.loginAction(vue.status)                  //給vuex傳入登錄狀態(tài)
    })
  }
export default {
    data() {
      return {
      };
    },
    methods: {
      ...mapActions([
        'updLoginName',
        'loginAction'
      ])
    }
  };

vue組件2 -- 獲取

//script
import { mapMutations } from 'vuex'

  export default {    
    methods: {
      ...mapMutations([
        'loginName',
        'loginState'
      ])
    }
}
<div v-if="$store.state.loginState !== 0"> 
  <span>{{ $store.state.loginName }}</span>
</div>
<div v-if="$store.state.loginState === 0">
  <span>請(qǐng)登錄</span>
</div>

END

自學(xué)前端,寫的有偏頗之處,還請(qǐng)指點(diǎn)一二

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 3,151評(píng)論 1 4
  • 目錄 一、項(xiàng)目結(jié)構(gòu)的核心思想 二、項(xiàng)目目錄結(jié)構(gòu) 三、資源路徑編譯規(guī)則 四、index.html 五、build目錄...
    科研者閱讀 11,589評(píng)論 0 40
  • 摘要: 2016年最火的前端框架當(dāng)屬Vue.js了,很多使用過vue的程序員這樣評(píng)價(jià)它,“vue.js兼具angu...
    OSC開源社區(qū)閱讀 24,035評(píng)論 2 149
  • Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)...
    白水螺絲閱讀 4,777評(píng)論 7 61
  • 今天被醫(yī)院里的電梯狠狠地夾了一下,手肘生疼了好久,差點(diǎn)就把眼淚給逼出來了。而在電梯里的那個(gè)大叔絲毫沒有感覺到歉意,...
    小野鶴閱讀 1,759評(píng)論 4 7

友情鏈接更多精彩內(nèi)容