首页 > 解决方案 > Reactjs/JS - 对对象/正在创建的内容感到困惑

问题描述

我刚刚从学习 Java 转到学习 Javascript,我现在正在尝试学习 React 和 Redux。我对在 YouTube 上关注的本教程中如何创建某些对象感到有些困惑。到目前为止,本教程仅涵盖了登录和登录网页。

api.js

import axios from "axios";

export default {
  user: {
    login: credentials =>
      axios.post("/api/auth", { credentials }).then(res => res.data.user),
    signup: user =>
      axios.post("/api/users", { user }).then(res => res.data.user),
    confirm: token =>
      axios.post("/api/auth/confirmation", { token }).then(res => res.data.user)
  }
};

这是我目前从这段代码中了解到的: axios被导入以便可以发出各种 HTTP 请求。创建了一个user对象,其中包含 3 个对象(函数?)的数组loginsignupconfirm。在loginobject 中,使用箭头函数credentials作为参数传递给axiosobject 的 post 函数。然后在将响应数据传递到 ??? 的地方调用一个 Promise 它返回一个res.data.user对象。

我不明白这个res.data.user对象是什么,为什么用点分隔的形式来描述它,而不是像这样的东西responseDataObject

下一段代码是导入 api.js 的应用程序 (Redux) 的“操作”部分。这里有 2 个函数被导出到一个新函数中,该函数根据用户的状态调用....我认为其他部分无关紧要,因为我了解编程逻辑。我不明白的是如何以及为什么这样res.data.object返回。data部分来自哪里?这是随意描述的吗?

我正在清除这里遗漏的东西,我一直在观看一些视频以试图了解发生了什么,但我认为这可能是一个简单的原因,最好在这里描述。

标签: reactjsreduxpromise

解决方案


您使用或理解不正确的一些术语。我认为在深入研究 React 之前了解它们很重要。

一、对象:

对象具有键/值对。

{
    fruit: "apple"
}

包含 3 个对象(函数?)的数组

这是不正确的。由于数组的语法是[]. 您所描述的是元素或成员或键。

下一部分是关于 Javascript 中的承诺。你有这个代码。axios.post("/api/auth", { credentials }).then(res => res.data.user),这基本上是说一旦你api用 that调用url,一些数据会回来(我们存储在 中res)。但res在这种情况下是一个对象。

如果你控制台 log res,你会得到一个像这样的对象:

{
  ...
  key1: "something",
  key2: "something else",
  data: {
     ...
     user: { //some info about the user}
     ...
  },
  ...
}

你想要的是里面的数据res,更具体地说,你想要的是用户的价值。因此,要访问它,您需要使用res.data.user.

希望这能回答你的一些问题,但还有很多话要说。你应该阅读更多关于 js 的对象。

https://www.w3schools.com/js/js_objects.asp https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise


推荐阅读