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 相关文章推荐
json原理分析及实例介绍
Nov 29 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
Sep 10 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
Dec 08 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
node.js的事件机制
Feb 08 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
EasyUI在Panel上动态添加LinkButton按钮
Aug 11 Javascript
基于vue 开发中出现警告问题去除方法
Jan 25 Javascript
jQuery实现的电子时钟效果完整示例
Apr 28 jQuery
vue-quill-editor富文本编辑器简单使用方法
Sep 21 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
玩转图像函数库―常见图形操作
2006/09/03 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
《红军不怕远征难》教学反思
2014/04/14 职场文书
运动会通讯稿200字
2015/07/20 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers