reactjs - 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 个对象(函数?)的数组login
:signup
和confirm
。在login
object 中,使用箭头函数credentials
作为参数传递给axios
object 的 post 函数。然后在将响应数据传递到 ??? 的地方调用一个 Promise 它返回一个res.data.user
对象。
我不明白这个res.data.user
对象是什么,为什么用点分隔的形式来描述它,而不是像这样的东西responseDataObject
?
下一段代码是导入 api.js 的应用程序 (Redux) 的“操作”部分。这里有 2 个函数被导出到一个新函数中,该函数根据用户的状态调用....我认为其他部分无关紧要,因为我了解编程逻辑。我不明白的是如何以及为什么这样res.data.object
返回。data
部分来自哪里?这是随意描述的吗?
我正在清除这里遗漏的东西,我一直在观看一些视频以试图了解发生了什么,但我认为这可能是一个简单的原因,最好在这里描述。
解决方案
您使用或理解不正确的一些术语。我认为在深入研究 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
推荐阅读
- python - Keras 中 RNN/LSTM 的 InvalidArgumentError
- azure - 从 Azure ARM 模板部署,在资源上检测到循环依赖
- android - R.attr.cardViewStyle 无法解析无法编辑?
- javascript - 如何用对象数组更新firebase?
- asp.net - 将 ASP.NET 应用程序部署到 AWS
- scrapy - Scrapy在一定级别的div之后不返回任何数据
- php - 将逗号分隔的字符串传递给codeigniter中的in子句
- java - Hibernate ResultTransformer 返回所有空值的映射
- excel - VBA 在 Excel 中合并列
- sql - 对于一名员工,应在一行上返回 In time 和 Out time