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 相关文章推荐
JavaScript中的面向对象介绍
Jun 30 Javascript
细说javascript函数从函数的构成开始
Aug 29 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
全面解析Bootstrap布局组件应用
Feb 22 Javascript
Vue AST源码解析第一篇
Jul 19 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
js闭包学习心得总结
Apr 17 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 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 数组的一个悲剧?
2011/05/11 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
许愿墙中用到的函数
2006/10/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python中splitlines()方法的使用简介
2015/05/20 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python使用thrift教程的方法示例
2019/03/21 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
django model object序列化实例
2020/03/13 Python
windows支持哪个版本的python
2020/07/03 Python
python如何调用java类
2020/07/05 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
总经理助理职责
2014/02/04 职场文书
踏青活动策划方案
2014/08/19 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
总结会主持词
2015/07/02 职场文书
Redis三种集群模式详解
2021/10/05 Redis