更新:问题是我的初始状态是一个空数组,因此由于某种原因,这只是尝试进行解构时的一个问题,但是我根据另一个平台上某人的一些建议将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这是我当前状态的屏幕截图,如果它可以帮助任何人更好地查看整个图片。
在此先感谢大家提供的帮助。
更新:问题是我的初始状态是一个空数组,因此出于某种原因,这只是尝试进行结构分解时的问题,但是我将const lastMessage = messages.slice(-1)[0];到const ...
我认为是因为它确实是空的,如果您首先检查消息是否不为空,如: