js的axios中遇到的this故障解决

博文背景

{{ message }}

this.axios.get(‘xxx’).then(response=>(this.message=response.data))后面接箭头函数可以返回结果但是直接改成普通函数不可以返回结果

解决办法
<template>
  <div id="app">
<!--    <img alt="Vue logo" src="./assets/logo.png">-->
<!--    <HelloWorld msg="Welcome to Your Vue.js App"/>-->
    <pre>{{ info }}</pre>

  </div>
</template>

<script>
// import HelloWorld from './components/HelloWorld.vue'

// import axios from "axios";

export default {
  name: 'App',
  // components: {
    // HelloWorld
  // },
  // data() {
  //   return {
  //     message: "hello world"
  //   }
  // }
  // data: function() {
  //   return {
  //     message: "hello world"
  //   }
  // }
  data() {
    return {
      info: "waiting for api requesting"
    }
  },
  // async mounted() {
  //   await this.axios.get('https://httpbin.org/get').then(response => JSON.stringify(this.info = response.data, null, 4))
  // }

  // 错误
  async mounted() {
    await this.axios.get('https://httpbin.org/get').then(function(response) {
      console.log(response.data);
      console.log(typeof(response.data))
      return Promise.resolve(this.info=response.data["url"]);
    })
  }
}
  // 正确
  async mounted() {
    let that=this;
    await this.axios.get('https://httpbin.org/get').then(function(response) {
      console.log(response.data);
      console.log(typeof(response.data))
      return Promise.resolve(that.info=response.data["url"]);
    })
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  font-size: 18px;
  /*-moz-osx-font-smoothing: grayscale;*/
  /*text-align: center;*/
  color: #2c3e50;
  /*margin-top: 60px;*/
}
</style>

参考链接:
https://zh.javascript.info/object-methods

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值