vue.js中引入vuex储存接口数据及调用的详细流程


Posted in Javascript onDecember 14, 2017

前言

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

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

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

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

  • 组件内部状态:仅在一个组件内使用的状态(data 字段)
  • 应用级别状态:多个组件共用的状态

举个例子:比如说有一个父组件,它有两个子组件。这个父组件可以用 props 向子组件传递数据,这条数据通道很好理解。

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

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

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

vue.js中引入vuex储存接口数据及调用的详细流程

里面的内容是这样的

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>

基本上流程就是这样

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
动态添加js事件实现代码
Mar 12 Javascript
JQuery 学习笔记 选择器之三
Jul 23 Javascript
JavaScript中判断函数是new还是()调用的区别说明
Apr 07 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
Jun 19 Javascript
Javascript实现找不同色块的游戏
Jul 17 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
vue页面切换到滚动页面显示顶部的实例
Mar 13 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
Jul 03 Javascript
vue自定义指令实现方法详解
Feb 11 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
JQuery animate动画应用示例
May 14 jQuery
javascript实现数字配对游戏的实例讲解
Dec 14 #Javascript
form表单数据封装成json格式并提交给服务器的实现方法
Dec 14 #Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 #Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 #Javascript
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 #jQuery
原生js实现简单的焦点图效果实例
Dec 14 #Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 #Javascript
You might like
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
详解php中的implements 使用
2017/06/13 PHP
javascript中的几个运算符
2007/06/29 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
Python类的用法实例浅析
2015/05/27 Python
深入理解Python中字典的键的使用
2015/08/19 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
Python程序运行原理图文解析
2018/02/10 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
设备管理实施方案
2014/05/31 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
学前班教学反思
2016/02/24 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
六年级作文之关于梦
2019/10/22 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS