开发者问题收集

无法设置未定义的属性(设置‘项目’)

2022-03-23
8391

我尝试将 API 数据推送到数组,但一直收到此错误:“AddProject.vue Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'projects')”。有什么建议吗?

newData 应该推送到数组,然后我想从那里使用项目数组来提取 API 数据。

3个回答

错误在于您在 function () 符号内使用了 this 。为了使其按预期工作,您应该使用箭头函数。

const test = async () => {
//...
}
Lykos94
2022-03-23

您不想在 methods 中创建新函数,只需添加您的代码(但确保 mounted 是异步的):

<script >
export default {
  data() {
    return {
      projects: [
        
      ]
    }
  },
  async mounted() {
    const data = await fetch("https://jsonplaceholder.typicode.com/posts");
    const newData = await data.json();
    console.log(newData)
    this.projects = newData;
  }
}
</script>

您可以这样做:

async mounted() {
    this.projects = await fetch("https://jsonplaceholder.typicode.com/posts").then(raw => raw.json());
  }

示例

tauzN
2022-03-23

首先,test() 应该是一种方法。其次,将项目中的右括号放在同一行上。

Eze Kohon
2022-03-23