Vue 使用 Vuex 和 axios 获取接口数据

  1. 修改原型链
//main.js

import axios from 'axios';

Vue.prototype.$ajax = axios; //修改原型链

// .vue文件

methods:{
    getData(){
        this.$ajax.get('https://easy-mock.com/mock/5d41481656e5d340d0338e4b/shop/commodity')
            .then(res => {
                console.log(res)
            }).catch(err => {
                console.log(err)
            })
    }
}

2.Vuex 结合 axios 封装一个 actions

//store.js

import Vue from 'vue';
import Vuex from 'Vuex';
import axios from 'axios';

export const store = new Vuex.Store({
    State: {
        list: []
    },
    mutations: {
        changeList(state,res){   // store中的数据只能通过commit mutation来改变
            state.list = res.data.data.list
        }
    },
    actions: {
        getInfo(context) {
            axios.get('https://easy-mock.com/mock/5d41481656e5d340d0338e4b/shop/commodity')
                .then(res => {
                    context.commit('changeList',res)
                }).catch(err => {
                    console.log(err)
                })
        }
    }
})

// .vue文件

import {mapState,mapActions} from 'vuex'

export default {
    name:"HelloWorld",
    methods:{
        ...mapActions([
            'getInfo'   // 触发actions里的 getInfo 函数,调动接口
        ])
    },
    computed:{
        ...mapState([
            'list'      // 获取store里的数据,放在computed中可以实时更新
        ])
    },
    mounted() {
        this.getInfo()
    }

}

上述两种方案是相互独立的,也就是说,即使在main.js中引入了axios并修改了原型链,
在store.js中也不能直接使用this.$ajax,而是要引入axios后再使用。

原文地址:https://www.cnblogs.com/sakura666/p/11331062.html

时间: 2024-07-30 04:18:43

Vue 使用 Vuex 和 axios 获取接口数据的相关文章

Python 获取接口数据,解析JSON,写入文件

Python 获取接口数据,解析JSON,写入文件 用于练手的例子,从国家气象局接口上获取JSON数据,将它写入文件中,并解析JSON: 总的来说,在代码量上,python代码量要比java少很多.而且python看起来更直观一些: 以下是代码: import types import urllib2 import json duan ="--------------------------" #在控制台断行区别的 #利用urllib2获取网络数据 def registerUrl():

Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调用就可以使用,方便快捷: 具体实现方便如下: 我们可以再三个地方设置公共的函数function.php (注意:function.php默认是不存在的,需手动创建) 根目录\Application\Common\Common\function.php(公共的函数,Home和Admin都可以调用) 根

Vue之vuex和axios

Vuex : vuex是一个专门为Vue.js设计的集中式状态管理架构. 状态: 可以理解为在data中需要共享给其他组件使用的部分. Vuex和单纯的全局对象的不同: 1. Vuex的状态存储是响应式的. 当vue组件从store中读取状态的时候, 若store中的状态发生改变, 那么相应的组件也会得到高效更新. 2. store中的状态不能直接进行改变, 改变store中的状态的唯一途径就是显示的提交(commit)mutation. 这样使得我们可以方便的跟踪每一个状态的变化, 从而让我们

nginx服务器代理获取接口数据

自从学会用nginx服务器代理抓取数据,妈妈再也不用担心我写DEMO时拿不到数据了,从此你也摆脱了自己造数据的烦恼.哇!又出新框架了,走,写个DEMO练习去,那我们用React.JS仿制个淘宝出来吧,淘宝数据怎么办???so easy , 直接去抓取接口数据就可以了. 一.下载nginx服务器 去nginx官网下载nginx服务器,我们就下载nginx/Windows-1.8.1 pgp 这个吧! 二.配置环境 1. 将下载的压缩包解压后获得如下图所示的文件夹: 2.打开conf文件夹并打开ng

Android -- 获取接口数据的三个方法

1.   compile 'com.loopj.android:android-async-http:1.4.9': AsyncHttpClient client = new AsyncHttpClient(); RequestParams params = new RequestParams(); params.addHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8"); params

vue vuecli element table 表格 获取行数据

是这样的,页面是商品列表 使用了element-ui  中的   el-table 正常渲染是没问题的,可是我需要显示商品图片,这就需要先获取到每个商品对象的图片路径,但是看element文档没有说怎么获取数据的,只是能够在列中使用prop 经过百度,知道了vue的插槽,代码如下 <el-table :data="goods" stripe border style="width: 100%"> <el-table-column prop=&quo

Reactjs之Axios、fetch-jsonp获取后台数据

1.新增知识点 /** Axios获取服务器数据(无法跨域,只能让后台跨域获取数据) react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 axios介绍: https://github.com/axios/axios axios的作者觉得jsonp不太友好,推荐用CORS方式更为干净(后端运行跨域) 1.安装axios模块npm install axios --save / npm install axios --

十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用

react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www.npmjs.com/package/axios git项目地址:https://github.com/axios/axios axios的作者觉得jsonp不太友好,推荐用CORS方式更为干净(后端运行跨域) npm官网:https://www.npmjs.com,在其搜索:axios即可看到详细说

喜马拉雅第三方客户端开发(接口和接口数据解析)。

前言:最近闲来无事,看了网上豆瓣的第三方客户端,手有点痒,决定自己动手开发一个客户端,比较了荔枝和喜马拉雅,决定开发喜马拉雅的第三方客户端. 客户端使用了WPF开发. 1.抓取接口: 首先得解决接口数据的问题,使用了手机端的喜马拉雅,抓包看了接口.这里推荐使用fiddler2这个工具.从图中可以看到接口信息,包括接口地址和参数的一些数据. 2.通过http获取接口数据和转换接口数据格式. 这里提供一个HttpWebRequestOpt类来获取接口数据. using System; using S