• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Nuxtaxios操作

武飞扬头像
M_wzz
帮助2

1 整合 axios

1.1 默认整合

  • 在构建项目时,如果选择axios组件,nuxt.js将自动与axios进行整合
    学新通

1.2 手动整合(可选)

  • 步骤1:package.json有axios的版本
    学新通

  •   "dependencies": {
        "@nuxtjs/axios": "^5.13.1",
      },
    
  • 步骤2:安装

    npm install
    
  • 步骤3:nuxt.config.js 以模块的方式添加axios

    学新通

      modules: [
        // https://go.nuxtjs.dev/axios
        '@nuxtjs/axios',
      ],
    

1.3 常见配置

  • 修改 nuxt.config.js 进行baseURL的配置学新通

      // Axios module configuration: https://go.nuxtjs.dev/config-axios
      axios: {
        baseURL:'http://localhost:10010/'
      },
    

2 使用axios发送ajax

  • 在vue页面中,通过 this. a x i o s . x x x ( ) 操 作 a j a x 。 t h i s . axios.xxx() 操作ajax。this. axios.xxx()ajaxthis.axios 与之前 axios等效。
  this.$axios.post("/search-service/search",this.searchMap).then( res => {
      //获得查询结果
      this.searchResult = res.data.data;
  });

3 使用asyncData发送 ajax

  • asyncData中的ajax将在“前端服务端执行”,在浏览器看到是数据,而不是ajax程序。

3.1 发送一次请求

  • 语法:
export default {
	async asyncData( context ) {  //context就相当于其他地方的this
        //发送ajax
        let { data } = await context.$axios.get('路径','参数')
        // 返回结果
        return {变量: 查询结果从data获取 }
	},
}
  • 实例

    <template>
      <div>{{echo}}</div>
    </template>
    
    <script>
    export default {
      async asyncData(context) {
        // 发送ajax
        let {data} = await context.$axios.get('/service-consumer/feign/echo/abc')
        // 返回数据
        return {
          echo: data
        }
      },
    }
    </script>
    
    <style>
    
    </style>
    
    
    学新通

3.2 发送多次请求

  • 语法1:
  export default {
      async asyncData( content ) {
          let [结果1,结果2] = await Promise.all([ ajax请求1, ajax请求2])
          return {
              变量1: 结果1,
              变量2: 结果2
          }
      },
  }
  • 语法2:
  export default {
      async asyncData( content ) {
          let [{数据:别名1},{数据:别名2}] = await Promise.all([ ajax请求1, ajax请求2])
          return {
              变量1: 别名1,
              变量2: 别名2
          }
      },
  }
  • 实例
<template>
  <div>{{echo}} {{echo2}}</div>
</template>

<script>
export default {
  async asyncData(context) {
    // 发送ajax
    let [{data:echo}, {data:echo2}] = 
                await Promise.all([
                    context.$axios.get('/service-consumer/feign/echo/abc'),
                    context.$axios.get('/service-consumer/client/echo/abc')
                ])

    // 返回数据
    return {
      echo,
      echo2
    }
  },
}
</script>

<style>

</style>

学新通

4 使用fetch发送 ajax

  • fetch 方法用于在渲染页面前填充应用的状态树(store)数据, 与 asyncData 方法类似,不同的是它不会设置组件的数据。

学新通

  • 步骤1:创建store/index.js

    export const state = () => ({
      str: 0
    })
    
    export const mutations = {
      setData (state, value) {
        state.str = value
      }
    }
    
  • 步骤2:测试页面

    <template>
      <div>
        <!-- 显示数据 -->
        {{$store.state.str}}
      </div>
    </template>
    
    <script>
    
    export default {
      async fetch( {store, $axios} ) {
        // 发送ajax
        let { data } = await $axios.get('/service-consumer/feign/echo/abc')
        // 设置数据
        store.commit('setData' , data )
      }
    }
    </script>
    
    <style>
    
    </style>
    
    
    学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgchggc
系列文章
更多 icon
同类精品
更多 icon
继续加载