Javascript 常量仅在分解结构时显示为未定义,而在重新分配给另一个常量时显示为未定义
更新:问题是我的初始状态是一个空数组,因此出于某种原因,这只是尝试解构时的问题,但我更改了Javascript 常量仅在分解结构时显示为未定义,而在重新分配给另一个常量时显示为未定义,javascript,redux,react-redux,destructuring,mern,Javascript,Redux,React Redux,Destructuring,Mern,更新:问题是我的初始状态是一个空数组,因此出于某种原因,这只是尝试解构时的问题,但我更改了const lastMessage=messages.slice(-1)[0]toconst lastMessage=messages.slice(-1)[0]|{}根据另一个平台上某人的建议,一切都很好。我的错,我本应该看到的,但被重新分配的工作抛在脑后了。谢谢你的帮助。我会对你的评论和回答投赞成票,但我的支持率太低了。谢谢你 所以我正在用Redux构建一个基于MERN的聊天应用程序。我试图从数据库中的最
const lastMessage=messages.slice(-1)[0]
toconst lastMessage=messages.slice(-1)[0]|{}代码>根据另一个平台上某人的建议,一切都很好。我的错,我本应该看到的,但被重新分配的工作抛在脑后了。谢谢你的帮助。我会对你的评论和回答投赞成票,但我的支持率太低了。谢谢你
所以我正在用Redux构建一个基于MERN的聊天应用程序。我试图从数据库中的最后一条消息中提取数据,然后将该数据作为道具传递给React中的组件。我遇到的问题是,当试图对原始的const lastMessage进行解构时,它(lastMessage)显示未定义。以下是我正在做的:
- 1) 将原始消息prop移出状态,该状态具有
消息对象
- 2) 使用messages.slice(-1)[0]将数组中的最后一个对象分配给const
最后一条消息
- 3) 然后我要做的是对lastMessage进行解构,以拉出
我想要的数据(文本和创建的),将传递给
另一个组成部分。但如果我尝试这个,我得到的最后一条信息是
“未定义”错误。见下例:
在这里,您可以看到我在尝试分解结构时遇到的错误。另外,我认为值得注意的是,我尝试过直接从messages.slice(-1)[0]进行解构,如下所示:const{text,created}=messages.slice(-1)[0]
,但没有成功,同样的错误。这就是为什么我想知道是否需要先创建一个新常量,原因可能是我丢失了,比如.slice(-1)[0]中的延迟,或者在尝试提取数据时使其未定义
如果我像在下面的代码中那样简单地重新分配它,那么它工作得很好,我可以通过控制台记录数据,所有数据都在那里。没有错误或问题,所以我知道这不是状态映射问题。所有内容都按预期显示在状态或控制台日志中。我错过了什么
export const UserList = props => {
const { members, messages } = props;
const lastMessage = messages.slice(-1)[0];
const example = lastMessage;
console.log(example);
您还可以看到这个屏幕截图,它显示了我只需重新分配一个新的const example=lastMessage
,然后控制台记录该新的示例const
这是我当前状态的截图,如果它能帮助任何人更好地看到整个画面的话
提前感谢您提供的任何帮助。我认为这是因为邮件确实是空的,如果您首先检查邮件是否不是空的,如:
if (messages) {
...
messages.slice(-1)[0]
...
}
在解构之前,您是否可以记录消息
和lastMessage
?是否可能消息
为空?(我意识到这并不能解释重新分配行为,但您所描述的似乎非常不可能。)和/或在分解结构行之前设置一个断点,并检查这些变量以确认它们是您认为的吗?
if (messages) {
...
messages.slice(-1)[0]
...
}