zoukankan      html  css  js  c++  java
  • nuxtjs中使用axios

    最近使用nuxtjs服务端渲染框架,在异步请求时遇到两个问题,一是怎么使用axios, 二是怎么在asyncData方法中使用axios

    当使用脚手架create nuxt-app创建项目时,会提示是否集成axios, 如果不选择,后面则使用方式一请求异步数据,如果选择,后面则使用方式二请求异步数据

    如上图,按照提示到选择axios的步骤,键盘"up", "down"移动箭头,space空格键选择或者取消, 然后继续enter进入下一步即可。

    方法一:普通的方式 

    1 .npm或者yarn安装依赖包

    1 $ npm install axios -S

    2 . 引入到组件中

     1 import axios from 'axios';
     2 
     3 export default {
     4   /* 其他代码 */
     5    // 使用Promise 
     6    asyncData ({params}) {
     7       return axios.get(`https://maoyan.com/ajax/cities`)
     8          .then(res => {
     9              console.log(res)
    10           })    
    11   }
    12       
    13   // 使用 async ... await  , 与Promise选择一种即可
    14   async asyncData({params}) {
    15     let { res } = await axios.get(`https://maoyan.com/ajax/cities`) 
    17     console.log(res)    
    18   }
    19     
    20   /*其他代码*/
    21 }

    方法二:集成的方式

      首先需要在配置文件nuxt.config.js中配置axios项

     1 modules: [
     2     '@nuxtjs/axios',
     3     '@nuxtjs/bulma'
     4 ],
     5   /* 需要使用 aixos必须配置以下两项axios和proxy*/
     6   axios: {
     7     prefix: '/api/',
     8     proxy: true
     9 },
    10 
    11 proxy: {
    12     '/api/': {
    13       target: 'https://maoyan.com/',
    14       pathRewrite: {
    15         '^/api/': ''
    16       }
    17     }
    18  },

    在组件中使用axios, 无需在import引入, 直接使用this.$axios即可

    1 // 这里引入context是上下文参数,代替了this,
    2 // 因为在asyncData方法是在组件初始化时调用,所以没法通过this来引用组件实例对象。
    3 asyncData(context) {
    4     return context.$axios.get('ajax/cities')
    5       .then(res => {
    6         console.log(res)
    7       })
    8   }
  • 相关阅读:
    C#-Linq-SelectMany
    C#-Linq-SelectMany
    DI是实现面向切面和面向抽象的前提
    java流程控制之Scanner(2)
    java流程控制之Scanner(1)
    java运算符之三目运算符
    java运算符之位运算
    java运算符之与或非
    java运算符之加减乘除
    java基础语法
  • 原文地址:https://www.cnblogs.com/hughes5135/p/10398920.html
Copyright © 2011-2022 走看看