你不知道的vuex 哈哈哈

vuex是一個專門為vue.js設計的集中式狀態(tài)管理架構(gòu)。簡單的說就是data中需要共用的屬性恢总。比如:我們有幾個頁面要顯示用戶名稱和用戶等級整胃,或者顯示用戶的地理位置。如果我們不把這些屬性設置為狀態(tài)利朵,那每個頁面遇到后,都會到服務器進行查找計算沃琅,返回后再顯示哗咆。在中大型項目中會有很多共用的數(shù)據(jù)蜘欲,所以就有了vuex益眉。

引入vuex

1.利用npm包管理工具,進行安裝 vuex。在控制命令行中輸入下邊的命令就可以了郭脂。

npm install vuex --save

如果是mac用戶沒有權(quán)限的話在前面加上sudo

sudo npm install vuex --save

如果電腦沒有翻墻的話可以使用國內(nèi)的淘寶鏡像cnpm年碘,速度飛起來了。
需要注意的是這里一定要加上 –save展鸡,因為你這個包我們在生產(chǎn)環(huán)境中是要使用的屿衅。

2.新建一個vuex文件夾(這個不是必須的),并在文件夾下新建store.js文件莹弊,文件中引入我們的vue和vuex涤久。

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

3.使用我們vuex,引入之后用Vue.use進行引用忍弛。

Vue.use(Vuex);

通過這三步的操作响迂,vuex就算引用成功了,接下來我們就可以盡情的玩耍了细疚。

入門小Demo

我們這個小案例先聲明一個state的count狀態(tài)蔗彤,在頁面中使用顯示這個count,然后可以利用按鈕進行加減疯兼,如果你看過我的文章然遏,你一定知道,在我們學基礎知識 的時候經(jīng)常編寫這個程序吧彪。我們來張圖片幫大家回憶一下待侵。


圖一

就是這個程序,不過我們這次要用的是vuex來進行制作来氧,并實現(xiàn)數(shù)據(jù)的共享傻谁。

1.現(xiàn)在我們store.js文件里增加一個常量對象幽邓。store.js文件就是我們在引入vuex時的那個文件。

const state={
    count:1
}

2.用export default 封裝代碼,讓外部可以引用弧呐。

export default new Vuex.Store({
    state
})

3.新建一個vue的模板,位置在components文件夾下探遵,名字叫count.vue淌喻。在模板中我們引入我們剛建的store.js文件,并在模板中用{{$store.state.count}}輸出count 的值瞄摊。

<template>
    <div>
        <h2>{{msg}}</h2>
        <hr/>
        <h3>{{$store.state.count}}</h3>
    </div>
</template>
<script>
    import store from '@/vuex/store'
    export default{
        data(){
            return{
                msg:'Hello Vuex',
 
            }
        },
        store
    }
</script>

4.在store.js文件中加入兩個改變state的方法勋又。

const mutations={
    add(state){
        state.count++;
    },
    reduce(state){
        state.count--;
    }
}

mutations是固定的寫法,意思是改變的
5.在count.vue模板中加入兩個按鈕换帜,并調(diào)用mutations中的方法楔壤。

<div>
    <button @click="$store.commit('add')">+</button>
    <button @click="$store.commit('reduce')">-</button>
</div>

state訪問狀態(tài)對象

一、通過computed的計算屬性直接賦值
computed屬性可以在輸出前惯驼,對data中的值進行改變蹲嚣,我們就利用這種特性把store.js中的state值賦值給我們模板中的data值递瑰。

computed:{
    count(){
        return this.$store.state.count;
    }
}

二、通過mapState的對象來賦值
我們首先要用import引入mapState隙畜。

import {mapState} from 'vuex';

然后還在computed計算屬性里寫如下代碼:

computed:mapState({
        count:state=>state.count
 })

這里我們使用ES6的箭頭函數(shù)來給count賦值抖部。

Mutations修改狀態(tài)

$store.commit( )

Vuex提供了commit方法來修改狀態(tài),我們粘貼出第一節(jié)課的代碼內(nèi)容议惰,簡單回顧一下慎颗,我們在button上的修改方法。

<button @click="$store.commit('add')">+</button>
<button @click="$store.commit('reduce')">-</button>

store.js文件:

const mutations={
    add(state){
        state.count++;
    },
    reduce(state){
        state.count--;
    }
}

模板獲取Mutations方法

在模板count.vue里用import 引入我們的mapMutations:
import { mapState,mapMutations } from 'vuex';
在模板的<script>標簽里添加methods屬性言询,并加入mapMutations
 methods:mapMutations([
        'add','reduce'
]),

通過上邊兩部俯萎,我們已經(jīng)可以在模板中直接使用我們的reduce或者add方法了,就像下面這樣运杭。

<button @click="reduce">-</button>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讯屈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子县习,更是在濱河造成了極大的恐慌涮母,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躁愿,死亡現(xiàn)場離奇詭異叛本,居然都是意外死亡,警方通過查閱死者的電腦和手機彤钟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門来候,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逸雹,你說我怎么就攤上這事营搅。” “怎么了梆砸?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵转质,是天一觀的道長。 經(jīng)常有香客問我帖世,道長休蟹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任日矫,我火速辦了婚禮赂弓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哪轿。我一直安慰自己盈魁,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布窃诉。 她就那樣靜靜地躺著杨耙,像睡著了一般姓惑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上按脚,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音敦冬,去河邊找鬼辅搬。 笑死,一個胖子當著我的面吹牛脖旱,可吹牛的內(nèi)容都是我干的堪遂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼萌庆,長吁一口氣:“原來是場噩夢啊……” “哼溶褪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起践险,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤猿妈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后巍虫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彭则,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年占遥,在試婚紗的時候發(fā)現(xiàn)自己被綠了俯抖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓦胎,死狀恐怖芬萍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搔啊,我是刑警寧澤柬祠,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站负芋,受9級特大地震影響瓶盛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜示罗,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一惩猫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚜点,春花似錦轧房、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迟赃。三九已至,卻和暖如春厂镇,著一層夾襖步出監(jiān)牢的瞬間纤壁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工捺信, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酌媒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓迄靠,卻偏偏與公主長得像秒咨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掌挚,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • vuex 場景重現(xiàn):一個用戶在注冊頁面注冊了手機號碼雨席,跳轉(zhuǎn)到登錄頁面也想拿到這個手機號碼,你可以通過vue的組件化...
    sunny519111閱讀 8,009評論 4 111
  • 安裝 npm npm install vuex --save 在一個模塊化的打包系統(tǒng)中吠式,您必須顯式地通過Vue.u...
    蕭玄辭閱讀 2,927評論 0 7
  • Vuex是什么陡厘? Vuex 是一個專為 Vue.js應用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應用的所有組件...
    蕭玄辭閱讀 3,111評論 0 6
  • 理解vue 引用一段官方的原話: Vue.js(讀音 /vju?/特占,類似于 view) 是一套構(gòu)建用戶界面的漸進式...
    綽號陸拾柒閱讀 2,372評論 3 6
  • 這兩天在做Vue移動端的項目雏亚,正好用到了Vuex,記錄一下相關(guān)知識摩钙。 一罢低、安裝 npm yarn Vuex是Vue...
    婷樓沐熙閱讀 7,680評論 2 2