视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001 知道1 知道21 知道41 知道61 知道81 知道101 知道121 知道141 知道161 知道181 知道201 知道221 知道241 知道261 知道281
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
vue.js中引入vuex储存接口数据及调用的详细流程
2020-11-27 22:23:54 责编:小采
文档

前言

前几天在慕课网上看到黄轶老师的高仿饿了么app视频教程,在做接口设计的时候,我在想,这个接口能不能储存下来全局调用呢?而不是走很多次接口,管理起来也麻烦。

万能的vue果然有这个功能,那就是vuex。

Vuex 是一个主要应用在中大型单页应用的类似于 Flux 的数据管理架构。它主要帮我们更好地组织代码,以及把应用内的的状态保持在可维护、可理解的状态。

如果你不太理解 Vue.js 应用里的状态是什么意思的话,你可以想象一下你此前写的 Vue 组件里面的 data 字段。Vuex 把状态分成组件内部状态和应用级别状态:

  • 组件内部状态:仅在一个组件内使用的状态(data 字段)
  • 应用级别状态:多个组件共用的状态
  • 举个例子:比如说有一个父组件,它有两个子组件。这个父组件可以用 props 向子组件传递数据,这条数据通道很好理解。

    具体的实现流程,当然是先安装了

    npm install vuex --save(推荐使用淘宝镜像cnpm,具体实施请自行百度)

    然后建立个store.js的文件来管理数据


    里面的内容是这样的

    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'

    然后就开始请求数据了,在mutations这个属性里写上

    mutations:{
     getJson(){
     Vue.http.get('../data.json',{
     },{
     headers:{},
     emulateJSON:true
     }).then(response=>{
     this.state.newslist=response.data;
     },response=>{
     
     })
     }
     }

    在这里写这样写是为了让actions调然后把数据存在state里面的,官网说这个是异步存数据,我理解的这个异步就跟ajax的异步加载一个意思,当然同步就是mutations了。但是异步的数据先写在mutations里面然后才能调用,所以就得在actions里面这样写

    actions:{
     newJson(obj){
     obj.commit('getJson');
     }
     },

    然后把把state写成这样

    state:{
     newslist:[]
     },

    这么写的目的是为了不报错,免得出现什么找不到之类的错误。

    上面的newJson跟obj是我自定义的,你可以随便写,getJson就是mutations里面你要用的方法,方便等会分流用,这个getJson方法也可以加参数的,但参数必须是state,这个state就是上面state,不是自定义的。写死。

    接下来在你的子组件里面就可以分流啦!

    子组件里的代码是这样的:

    import {mapState} from 'vuex';
    computed:{
     ...mapState({
     goods:state=>state.newslist.goods,
     classMap:state=>state.classMap
     })
     }

    在这里我自定义了个goods来代替state.newslist.goods,因为我的数据是

    {
    "goods":[]
    }

    这种格式,我嫌长,就缩短了下。

    然后在html里面就可以直接调用了,这里贴一小块代码

    <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>

    基本上流程就是这样

    总结

    下载本文
    显示全文
    专题