首页 > 解决方案 > undefined 不是一个对象(评估'message.message_contacts.filter')

问题描述

嘿,这是一个带有 redux saga 的反应本机代码。代码返回一个list.map带有“filterUnreadMessages = list”的代码......但由于某种原因,代码返回了这个特定的错误:

undefined 不是一个对象(评估'message.message_contacts.filter')

  const messageIds = list.map(message => message.id);

  const filterUnreadMessages = list
    .map(message =>
      message.message_contacts.filter(
        contact => contact.contact_id === userId && contact.readed_at === null,
      ),

标签: javascriptandroidiosreact-nativeredux-saga

解决方案


这意味着 that message.message_contactsis undefined,所以你不能调用.filter它。或者,message它本身是未定义的。

您可以先进行检查:

const filterUnreadMessages = list
  .map(message => {
    if (message !== undefined && Array.isArray(message.message_contacts)) { // <-- check here
      return message.message_contacts.filter(
        contact => contact.contact_id === userId && contact.readed_at === null,
      )
    } else {
      return [];
    }
  }

推荐阅读