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实现控制台控件的代码
Sep 04 Javascript
javascript 学习之旅 (3)
Feb 05 Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
get(0).tagName获得作用标签示例代码
Oct 08 Javascript
js闭包的用途详解
Nov 09 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
Mar 09 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
vue-cli 为项目设置别名的方法
Oct 15 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JavaScript 特殊字符
2007/04/05 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python实现求解括号匹配问题的方法
2018/04/17 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
python如何实现复制目录到指定目录
2020/02/13 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
Django如何实现防止XSS攻击
2020/10/13 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
园林设计师自荐信
2013/11/18 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
运动会广播稿60字
2014/01/15 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
工商管理专业自荐信
2014/06/03 职场文书
职工年度考核评语
2014/12/31 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
浅谈Python协程asyncio
2021/06/20 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
python 中yaml文件用法大全
2021/07/04 Python
Python几种酷炫的进度条的方式
2022/04/11 Python
Redis高并发缓存架构性能优化
2022/05/15 Redis