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 相关文章推荐
Java Mybatis框架入门基础教程
Sep 21 Javascript
jQuery控制frames及frame页面JS的方法
Mar 08 Javascript
Node.js的Express框架使用上手指南
Mar 12 Javascript
js调用屏幕宽度的简单方法
Nov 14 Javascript
JavaScript中this的用法实例分析
Dec 19 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
jQuery使用方法
Feb 04 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 Javascript
js通过canvas生成图片缩略图
Oct 02 Javascript
Promise静态四兄弟实现示例详解
Jul 07 Javascript
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常用代码大全(新手入门必备)
2010/06/29 PHP
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
js定时器实例分享
2016/12/20 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python 闭包的使用方法
2017/09/07 Python
Python字典对象实现原理详解
2019/07/01 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
如何通过命令行进入python
2020/07/06 Python
python实现数字炸弹游戏
2020/07/17 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
竞选班长演讲稿500字
2014/08/22 职场文书
检讨书大全
2015/01/27 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL