const 仅在解构时显示为未定义,而不是在重新分配给另一个 const 时

const showing as undefined ONLY when destructuring, NOT when reassigning to another const

更新:问题是我的初始状态是一个空数组,所以出于某种原因,这只是尝试解构时的一个问题,但我根据一些建议将 const lastMessage = messages.slice(-1)[0]; 更改为 const lastMessage = messages.slice(-1)[0] || {};有人在另一个平台上,一切都很好。我的错,我应该看到它,但被重新分配工作很好地抛弃了。感谢您的帮助。我会对您的评论和答案进行投票,但我的代表太低了。不胜感激!

所以我正在使用 Redux 构建一个基于 MERN 的聊天应用程序。我试图从我的数据库中的最后一条消息中提取数据,然后将该数据作为道具传递给 React 中的组件。我遇到的问题是,当试图解构原始的 const lastMessage 时,它​​ (lastMessage) 显示未定义。这是我正在做的事情:

export const UserList = props => {
  const { members, messages } = props;
  const lastMessage = messages.slice(-1)[0];
  const { text, date } = lastMessage;
  console.log(text, date);

Error Undefined 在这里您可以看到我在尝试解构时遇到的错误。另外,我认为值得注意的是,我尝试直接从 messages.slice(-1)[0] 解构,如下所示: const { text, created } = messages.slice(-1)[0] 但这没有用,同样的错误。这就是为什么我想知道我是否需要先创建一个新的 const,出于某种原因,也许我丢失了,比如 .slice(-1)[0] 中的延迟或者在尝试拉动时导致它未定义的东西出数据。

如果我像在下面的代码中那样简单地重新分配它,那么它工作正常,我可以控制台记录数据,它就在那里。没有错误或问题,所以我知道这不是状态映射问题。一切都按预期显示在状态或控制台日志中。我在这里错过了什么?

export const UserList = props => {
  const { members, messages } = props;
  const lastMessage = messages.slice(-1)[0];
  const example = lastMessage;
  console.log(example);

Console Log of example const 您还可以看到这个屏幕截图,它显示了当我简单地重新分配一个新的 const example = lastMessage 然后控制台记录新示例 const.

Current state 如果它可以帮助任何人更好地了解整个画面,这是我当前状态的屏幕截图。

提前感谢大家提供的任何帮助。

我认为是因为真的是空的,如果你先检查消息是否不为空会怎么样:

if (messages) { 
   ... 
   messages.slice(-1)[0] 
   ... 
}