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   }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM