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 鼠标点击事件及其它捕获
Jun 04 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
javascript实现获取服务器时间
May 19 Javascript
Bootstrap树形控件使用方法详解
Jan 27 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
Angularjs过滤器使用详解
May 25 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
layer扩展打开/关闭动画的方法
Sep 23 Javascript
解决vue scoped html样式无效的问题
Oct 24 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
一个程序下载的管理程序(二)
2006/10/09 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
window下eclipse安装python插件教程
2017/04/24 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
Python类装饰器实现方法详解
2018/12/21 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python实现动态给类和对象添加属性和方法操作示例
2020/02/29 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
电子工程专业毕业生求职信
2014/03/14 职场文书
元旦联欢会主持词
2014/03/26 职场文书
语文教育专业求职信
2014/06/28 职场文书
创优争先心得体会
2014/09/11 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
违纪检讨书范文
2015/01/27 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL