1. 程式人生 > >vuex基礎詳解及項目實例

vuex基礎詳解及項目實例

export DDU 整合 輸入 發的 .com return isp 分享

1、概念

Vuex 是一個專為 Vue.js 的SPA單頁組件化應用程序開發的狀態管理模式插件,它包括State(數據源)、Getters(計算屬性)、Modules(模塊)、Mutations(事件)、Action(事件)。Action與Mutation的區別在於Mutation可以更改State,所以當Action要更改狀態時通常是提交到Mutation中更改。

2、安裝

2.1、安裝完vue後就可安裝vuex,本次示例建立在安裝了vue-cli腳手架工具的基礎上。安裝vuex方法為在命令行輸入:

npm install vuex -save-dev

2.2、新建一個store文件夾,裏面新建四個js,如圖所示:

技術分享

其中index.js中包括引入vuex相關代碼,還包括引入mutitions.js、action.js、getters.js,也還包括vuex的state模塊的代。

2.2.1、index.js的代碼:

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

Vue.use(Vuex)
const state = {
users: ‘‘,
password: ‘‘
}

export default new Vuex.Store({
state,
actions,
getters,
mutations
})
此處將分為不同js的vuex模塊整合後導出以供此項目使用。引入的包括state、action、mutations。state存儲項目的數據源。

2.2.2、getters.js

export const users = state => state.users
export const password = state => state.password

2.2.3、action.js

export const showUsers = ({ commit }) => commit(‘showUsers‘)

export const addUsers = ({ commit }, payload) => {
commit(‘addUsers‘, payload)
}
export const addPassword = ({ commit }, payload) => {
commit(‘addPassword‘, payload)
}

2.2.4、mutations.js

export const addUsers = (state, { users }) => {
state.users = users
}
export const addPassword = (state, { password }) => {
state.password = password
}
export const showUsers = state => {
alert(‘用戶名為:‘ + state.users + ‘密碼為:‘ + state.password)
}

2.3、然後在main.js中寫入以下代碼:

import store from ‘./store‘

然後在vue實例中引入store:

技術分享

寫入紅色框中的代碼即可。

3、使用

index.vue代碼如下:

<template>
<div class="">
<h1>{{ msg }}</h1>
用戶名:<input type="text" v-model="users" v-on:blur="usersChange(users)">
密碼:<input type="text" v-model="password" v-on:blur="passwordChange(password)">
<button type="button" v-on:click="submit" class="btn btn-default">查看</button>
</div>
</template>

<script>
export default {
name: ‘index‘,
data () {
return {
msg: ‘設置用戶名和密碼‘,
users: ‘‘,
password: ‘‘
}
},
methods: {
usersChange (users) {
this.$store.dispatch(‘addUsers‘, { users })
},
passwordChange (password) {
this.$store.dispatch(‘addPassword‘, { password })
},
submit () {
this.$store.dispatch(‘showUsers‘)
}
}
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

4、運行結果

技術分享

點擊查看彈出對話框如下:

技術分享

vuex基礎詳解及項目實例