vue.js中引入vuex儲存接口數(shù)據(jù)及調(diào)用的詳細流程
前言
前幾天在慕課網(wǎng)上看到黃軼老師的高仿餓了么app視頻教程,在做接口設(shè)計的時候,我在想,這個接口能不能儲存下來全局調(diào)用呢?而不是走很多次接口,管理起來也麻煩。
萬能的vue果然有這個功能,那就是vuex。
Vuex 是一個主要應(yīng)用在中大型單頁應(yīng)用的類似于 Flux 的數(shù)據(jù)管理架構(gòu)。它主要幫我們更好地組織代碼,以及把應(yīng)用內(nèi)的的狀態(tài)保持在可維護、可理解的狀態(tài)。
如果你不太理解 Vue.js 應(yīng)用里的狀態(tài)是什么意思的話,你可以想象一下你此前寫的 Vue 組件里面的 data 字段。Vuex 把狀態(tài)分成組件內(nèi)部狀態(tài)和應(yīng)用級別狀態(tài):
- 組件內(nèi)部狀態(tài):僅在一個組件內(nèi)使用的狀態(tài)(data 字段)
- 應(yīng)用級別狀態(tài):多個組件共用的狀態(tài)
舉個例子:比如說有一個父組件,它有兩個子組件。這個父組件可以用 props 向子組件傳遞數(shù)據(jù),這條數(shù)據(jù)通道很好理解。
具體的實現(xiàn)流程,當然是先安裝了
npm install vuex --save(推薦使用淘寶鏡像cnpm,具體實施請自行百度)
然后建立個store.js的文件來管理數(shù)據(jù)

里面的內(nèi)容是這樣的
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state:{
},
actions:{
},
mutations:{
}
})
然后在main.js里面引入這個js文件
import store from './store.js'
然后就開始請求數(shù)據(jù)了,在mutations這個屬性里寫上
mutations:{
getJson(){
Vue.http.get('../data.json',{
},{
headers:{},
emulateJSON:true
}).then(response=>{
this.state.newslist=response.data;
},response=>{
})
}
}
在這里寫這樣寫是為了讓actions調(diào)然后把數(shù)據(jù)存在state里面的,官網(wǎng)說這個是異步存數(shù)據(jù),我理解的這個異步就跟ajax的異步加載一個意思,當然同步就是mutations了。但是異步的數(shù)據(jù)先寫在mutations里面然后才能調(diào)用,所以就得在actions里面這樣寫
actions:{
newJson(obj){
obj.commit('getJson');
}
},
然后把把state寫成這樣
state:{
newslist:[]
},
這么寫的目的是為了不報錯,免得出現(xiàn)什么找不到之類的錯誤。
上面的newJson跟obj是我自定義的,你可以隨便寫,getJson就是mutations里面你要用的方法,方便等會分流用,這個getJson方法也可以加參數(shù)的,但參數(shù)必須是state,這個state就是上面state,不是自定義的。寫死。
接下來在你的子組件里面就可以分流啦!
子組件里的代碼是這樣的:
import {mapState} from 'vuex';
computed:{
...mapState({
goods:state=>state.newslist.goods,
classMap:state=>state.classMap
})
}
在這里我自定義了個goods來代替state.newslist.goods,因為我的數(shù)據(jù)是
{
"goods":[]
}
這種格式,我嫌長,就縮短了下。
然后在html里面就可以直接調(diào)用了,這里貼一小塊代碼
<ul>
<li v-for="(item,index) in goods" class="menu-item" :class="{'current':currentIndex===index}" @click="selectMenu(index,$event)">
<span class="text border-1px">
<span class="icon" v-show="item.type>0">
</span>
{{item.name}}
</span>
</li>
</ul>
基本上流程就是這樣
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Vue.js實戰(zhàn)之使用Vuex + axios發(fā)送請求詳解
- Vuex之理解Store的用法
- 詳解vuex 中的 state 在組件中如何監(jiān)聽
- Vuex之理解Mutations的用法實例
- vue-router+vuex addRoutes實現(xiàn)路由動態(tài)加載及菜單動態(tài)加載
- vuex state及mapState的基礎(chǔ)用法詳解
- Vuex之理解Getters的用法實例
- 深入理解Vuex 模塊化(module)
- Vue.js實戰(zhàn)之Vuex的入門教程
- 全站最詳細的Vuex教程
- 如何使用Vuex+Vue.js構(gòu)建單頁應(yīng)用
- 詳解Vuex管理登錄狀態(tài)
- 使用sessionStorage解決vuex在頁面刷新后數(shù)據(jù)被清除的問題
- 解決VUEX刷新的時候出現(xiàn)數(shù)據(jù)消失
- Vuex之理解state的用法實例
- 詳解Vuex中mapState的具體用法
- vue+vuex+axio從后臺獲取數(shù)據(jù)存入vuex實現(xiàn)組件之間共享數(shù)據(jù)
- Vuex的API文檔說明詳解
相關(guān)文章
uniApp?h5項目如何通過命令行打包并生成指定路徑及文件名稱
用uni-app來寫安卓端,近日需要將程序打包為H5放到web服務(wù)器上,經(jīng)過一番折騰,這里給大家分享下,這篇文章主要給大家介紹了關(guān)于uniApp?h5項目如何通過命令行打包并生成指定路徑及文件名稱的相關(guān)資料,需要的朋友可以參考下2024-02-02
vue展示dicom文件醫(yī)療系統(tǒng)的實現(xiàn)代碼
這篇文章主要介紹了vue展示dicom文件醫(yī)療系統(tǒng)的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒加載,需要的朋友可以參考下2018-08-08
淺析Vue下的components模板使用及應(yīng)用
這篇文章主要介紹了Vue下的components模板的使用及應(yīng)用,本文通過代碼介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11

