ОБНОВЛЕНИЕ: проблема заключалась в том, что мое первоначальное состояние - пустой массив, поэтому по какой-то причине это была проблема только при попытке деструктурировать, но я изменяю const lastMessage = messages.slice(-1)[0];
на const lastMessage = messages.slice(-1)[0] || {};
по совету кого-то на другой платформе, и все хорошо. Моя вина, и я должен был это видеть, но был сбит с толку переназначением, работающим очень хорошо. Спасибо вам за помощь. Я бы проголосовал за ваши комментарии и ответы, но моя репутация слишком низкая. Спасибо!
Итак, я создаю приложение чата на основе MERN с Redux. Я пытаюсь извлечь данные из последнего сообщения в моей БД, а затем передать эти данные в качестве реквизита компоненту в React. Проблема, с которой я сталкиваюсь, заключается в том, что при попытке деструктурировать исходное const lastMessage, оно (lastMessage) показывает неопределенное. Вот что я делаю:
- 1) Выводим исходное сообщение из состояния, содержащего массив объектов сообщения.
- 2) Используйте messages.slice (-1 ) [0], чтобы назначить последний объект в массиве для const lastMessage.
- 3) Тогда я ХОЧУ сделать, это деструктурировать lastMessage, чтобы извлечь нужные мне данные (текст и созданные), которые будут передается другому компоненту. Но если я попробую это, я получу ошибку «lastMessage is undefined». См. Пример ниже:
export const UserList = props => {
const { members, messages } = props;
const lastMessage = messages.slice(-1)[0];
const { text, date } = lastMessage;
console.log(text, date);
Ошибка не определена Здесь вы можете увидеть ошибку, с которой я сталкиваюсь при попытке деструктурировать. Кроме того, я думаю, что стоит отметить, что я попытался выполнить деструктурирование непосредственно из messages.slice (-1) [0] следующим образом: const { text, created } = messages.slice(-1)[0]
, но это не сработало, та же ошибка. Вот почему я задавался вопросом, нужно ли мне сначала создать новый const, по какой-то причине, может быть, я пропустил, например, может быть задержка в .slice (-1) [0] или что-то, что делало его неопределенным при попытке вытянуть out of data.
Если я просто переназначу его, как я делал в приведенном ниже коде, то он будет работать нормально, и я смогу сохранить данные в консоли, и все это там. Нет ошибок или проблем, поэтому я знаю, что это не проблема отображения состояния. Все отображается как ожидалось в состоянии или в журнале консоли. Что мне здесь не хватает?
export const UserList = props => {
const { members, messages } = props;
const lastMessage = messages.slice(-1)[0];
const example = lastMessage;
console.log(example);
Журнал консоли примера const Вы также можете увидеть этот снимок экрана, который показывает, когда я просто переназначаю новый const example = lastMessage
, а затем консоль регистрирует этот новый Пример const.
Текущее состояние Вот снимок экрана с моим текущим состоянием, если оно помогает кому-нибудь увидеть всю картину немного лучше.
Заранее всем спасибо за любую помощь Вы можете предложить.