未捕获(承诺中)类型错误:无法使用 axios 设置未定义的属性

2023-12-25

我有这个 vue.js 组件,它使用 axios 来检索 json 数组joke对象:

<template>
  <div id="show-jokes-all">
        <h2>Showing all jokes</h2>
        <div v-for="joke in jokes">
                <h2>{{joke.title}}</h2>
                <article>{{joke.body}}</article>
            <hr>
        </div>  

  </div>
</template>

<script>
import axios from 'axios';

    export default {
        name: 'showJokes',

      data () {
        return {
            jokes:[]

        }
      },

      methods: {

      },

      created() {
        axios.get('http://127.0.0.1:8090/api/jokes).then(function(data){    
       //console.log(data); works fine
        this.jokes = data.body;
        });
    }
}
</script>

当我在控制台中记录结果时,效果很好,但是当我尝试将其放入时jokes我得到的数组

未捕获(承诺中)类型错误:无法设置属性“笑话” 不明确的

这可能是一个微不足道的错误,但作为 vue.js 的新手,我对此很了解,所以感谢您的提示。


你已经出局了this语境。你应该存储this变量的上下文。

 created() {
    let self = this
    axios.get('http://127.0.0.1:8090/api/jokes').then(function(data){    
   //console.log(data); works fine
    self.jokes = data.body;
    });
}

有很多方法可以在如何正确访问this在回调中? https://stackoverflow.com/a/20279485。你可以参考这里,有很多方法。

感谢伯特的评论

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未捕获(承诺中)类型错误:无法使用 axios 设置未定义的属性 的相关文章

随机推荐