国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue.js中引入vuex儲存接口數(shù)據(jù)及調(diào)用的詳細流程

2019-11-19 14:44:03
字體:
供稿:網(wǎng)友

前言

前幾天在慕課網(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)流程,當(dāng)然是先安裝了

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的異步加載一個意思,當(dāng)然同步就是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)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嵩明县| 嘉禾县| 巴东县| 秀山| 呼图壁县| 阳原县| 句容市| 宝清县| 垣曲县| 云安县| 新巴尔虎右旗| 沧州市| 阿荣旗| 南郑县| 桐城市| 驻马店市| 延长县| 德令哈市| 高碑店市| 浦江县| 正镶白旗| 内丘县| 商洛市| 尼玛县| 绵竹市| 博兴县| 汉中市| 抚顺县| 樟树市| 信丰县| 驻马店市| 无极县| 浦江县| 汪清县| 罗山县| 万州区| 房山区| 项城市| 广水市| 平顶山市| 大关县|