Vuex 使用及簡(jiǎn)單實(shí)例(計(jì)數(shù)器)
前一段時(shí)間因?yàn)樾枰褂胿ue,特地去學(xué)習(xí)了一下。但是時(shí)間匆忙vuex沒(méi)有接觸到,今天閑暇時(shí)看了解了一下vuex,并做了一個(gè)小demo,用于記錄vuex的簡(jiǎn)單使用過(guò)程。
什么是Vuex?
vuex是專(zhuān)門(mén)為vue.js應(yīng)用程序開(kāi)發(fā)的一種狀態(tài)管理模式,當(dāng)多個(gè)視圖依賴(lài)于同一個(gè)狀態(tài)或是多個(gè)視圖均可更改某個(gè)狀態(tài)時(shí),將共享狀態(tài)提取出來(lái),全局管理。
引入Vuex(前提是已經(jīng)用Vue腳手架工具構(gòu)建好項(xiàng)目)
1、利用npm包管理工具,進(jìn)行安裝 vuex。在控制命令行中輸入下邊的命令就可以了。
npm install vuex --save
要注意的是這里一定要加上 –save,因?yàn)槟氵@個(gè)包我們?cè)谏a(chǎn)環(huán)境中是要使用的。
2、新建一個(gè)store文件夾(這個(gè)不是必須的),并在文件夾下新建store.js文件,文件中引入我們的vue和vuex。
import Vue from 'vue'; import Vuex from 'vuex';
3、使用我們vuex,引入之后用Vue.use進(jìn)行引用。
Vue.use(Vuex);
通過(guò)這三步的操作,vuex就算引用成功了,接下來(lái)我們就可以盡情的玩耍了。
4、在main.js 中引入新建的vuex文件
import storeConfig from './vuex/store'
5、再然后 , 在實(shí)例化 Vue對(duì)象時(shí)加入 store 對(duì)象 :
new Vue({
el: '#app',
router,
store,//使用store
template: '<App/>',
components: { App }
})
下面是一個(gè)計(jì)數(shù)器的例子
在src目錄下創(chuàng)建一個(gè)store文件夾。
src/store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0,
show: ''
},
getters: {
counts: (state) => {
return state.count
}
},
mutations: {
increment: (state) => {
state.count++
},
decrement: (state) => {
state.count--
},
changTxt: (state, v) => {
state.show = v
}
}
})
export default store
state就是我們的需要的狀態(tài),狀態(tài)的改變只能通過(guò)提交mutations,例如:
handleIncrement () {
this.$store.commit('increment')
}
帶有載荷的提交方式:
changObj () {
this.$store.commit('changTxt', this.obj)
}
當(dāng)然了,載荷也可以是一個(gè)對(duì)象,這樣可以提交多個(gè)參數(shù)。
changObj () {
this.$store.commit('changTxt', {
key:''
})
}
在main.js中引入store.js
import store from './store/store'
export default new Vue({
el: '#app',
router,
store,
components: {
App
},
template: '<App/>'
})
在組件中使用
在組建可以通過(guò)$store.state.count獲得狀態(tài)
更改狀態(tài)只能以提交mutation的方式。
<template>
<div class="store">
<p>
{{$store.state.count}}
</p>
<el-button @click="handleIncrement"><strong>+</strong></el-button>
<el-button @click="handleDecrement"><strong>-</strong></el-button>
<hr>
<h3>{{$store.state.show}}</h3>
<el-input
placeholder="請(qǐng)輸入內(nèi)容"
v-model="obj"
@change="changObj"
clearable>
</el-input>
</div>
</template>
<script>
export default {
data () {
return {
obj: ''
}
},
methods: {
handleIncrement () {
this.$store.commit('increment')
},
handleDecrement () {
this.$store.commit('decrement')
},
changObj () {
this.$store.commit('changTxt', this.obj)
}
}
}
</script>
到這里這個(gè)demo就結(jié)束了,

感覺(jué)整個(gè)個(gè)過(guò)程就是一個(gè)傳輸數(shù)據(jù)的過(guò)程,有點(diǎn)類(lèi)似全局變量,但是vuex是響應(yīng)式的。
這里當(dāng)然并沒(méi)有完全發(fā)揮出全部的vuex,
vuex還在學(xué)習(xí)中,寫(xiě)這篇文章主要是記錄其簡(jiǎn)單的使用過(guò)程。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Vue中實(shí)現(xiàn)網(wǎng)頁(yè)截圖與截屏功能詳解
在Web開(kāi)發(fā)中,有時(shí)候需要對(duì)網(wǎng)頁(yè)進(jìn)行截圖或截屏,Vue作為一個(gè)流行的JavaScript框架,提供了一些工具和庫(kù),可以方便地實(shí)現(xiàn)網(wǎng)頁(yè)截圖和截屏功能,本文將介紹如何在Vue中進(jìn)行網(wǎng)頁(yè)截圖和截屏,需要的朋友可以參考下2023-06-06
vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決
這篇文章主要介紹了vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
在vuex中有四大金剛分別是State, Mutations,Actions,Getters,本文對(duì)這四大金剛做了詳細(xì)介紹,本文重點(diǎn)是給大家介紹vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用,感興趣的朋友一起看看吧2018-04-04
vue3+TypeScript+vue-router的使用方法
本文詳細(xì)講解了vue3+TypeScript+vue-router的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
基于vue-cli npm run build之后vendor.js文件過(guò)大的解決方法
今天小編就為大家分享一篇基于vue-cli npm run build之后vendor.js文件過(guò)大的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
在Vue項(xiàng)目中引入騰訊驗(yàn)證碼服務(wù)的教程
這篇文章主要介紹了在Vue項(xiàng)目中引入騰訊驗(yàn)證碼服務(wù)的教程,需要的朋友可以參考下2018-04-04
vue2結(jié)合echarts實(shí)現(xiàn)一個(gè)地圖的效果
這篇文章主要介紹了vue2結(jié)合echarts實(shí)現(xiàn)一個(gè)地圖的效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家何用vue和echarts實(shí)現(xiàn)一個(gè)地圖有一定的幫助,感興趣的朋友一起看看吧2024-03-03

