vuex方法封裝調用


vuex

https://vuex.vuejs.org/zh/guide/mutations.html

index.js

import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import state from './state'
import mutations from './mutations'

// 插件,mutations修改state時會記錄並顯示修改日志
import createLogger from 'vuex/dist/logger'

Vue.use(Vuex)

// vuex中的調試工具,比較費性能,只在開發中使用
const debug = process.env.NODE_ENV !== 'production'

export default new Vuex.Store({
  actions,
  getters,
  state,
  mutations,
  strict: debug,
  plugins: debug ? [createLogger()] : []
})

state.js 定義vuex中狀態變量

const state = {
  singer: {},
  
}

export default state

getters.js 過濾包裝state變量

 

// 過濾並計算屬性
export const singer = state => state.singer

 

actions.js 異步調用修改mutations中的方法

 

export const setSinger = function ({commit}, {list}) {
  commit(types.SET_SINGER, true)
}

 

mutations-type.js 封裝mutations中的方法常量

 

// mutation 里用到的方法常量值
export const SET_SINGER = 'SET_SINGER'

 

mutations.js同步修改state中的變量

 

// 同步方法,修改state的值
import * as types from './mutation-types'

const mutations = {
  [types.SET_SINGER](state, singer) {
    state.singer = singer
  }
}

export default mutations

 調用vuex中的方法

//示例:調用 actions中的方法並傳值
import {mapActions} from 'vuex' ...mapActions([ 'setSinger', 'setRan' ])


      selectItem(itemindex) {
        //向vuex的actions中的方法傳值
        this.setSinger({
          list: this.testList,
          index
        })
      },
 

 

調用vuex修改state中的變量

 

//示例:通過mutations修改state中的變量
import {mapMutations,} from 'vuex'

      ...mapMutations({
        updateSinger: 'SET_FULL_SCREEN'
      }),


      open() {
        //調用vuex的mutations中的方法修改state中的值
        this.updateSinger(true)
      },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM