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

问题描述 投票:0回答:1

更新:问题是我的初始状态是一个空数组,因此由于某种原因,这只是尝试进行解构时的一个问题,但是我根据另一个平台上某人的一些建议将const lastMessage = messages.slice(-1)[0];更改为const lastMessage = messages.slice(-1)[0] || {};,并且所有很好。我的错,我应该已经知道了,但是被重新分配解决了,一切都很好。

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

  • 1)使原始消息prop脱离状态,状态为消息对象。
  • 2)使用messages.slice(-1)[0]将数组中的最后一个对象分配给constlastMessage。
  • 3)然后我想做的是对lastMessage进行解构以提取我想要的数据(文本和创建的),这些数据将向下传递到另一个组件。但是,如果我尝试这样做,我会得到'lastMessage is未定义”错误。请参见下面的示例:
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这是我当前状态的屏幕截图,如果它可以帮助任何人更好地查看整个图片。

在此先感谢大家提供的帮助。

更新:问题是我的初始状态是一个空数组,因此出于某种原因,这只是尝试进行结构分解时的问题,但是我将const lastMessage = messages.slice(-1)[0];到const ...

javascript redux react-redux destructuring mern
1个回答
0
投票

我认为是因为它确实是空的,如果您首先检查消息是否不为空,如:

© www.soinside.com 2019 - 2024. All rights reserved.