开发者问题收集

无法修复无法读取未定义的属性

2022-04-12
1508

我试图消除此错误,但无法解决此问题,当没有数据可过滤时,这种情况很明显,我想避免它

我有一个过滤数据的函数

const filteredItems = useMemo(() => {
    return results.filter((quote) => {
      const a = quote.customer_reference.toLowerCase().includes(customer_reference.toLowerCase())
      const b = quote.created_by.toLowerCase().includes(created_by.toLowerCase())
      const c = quote.quote_status.toLowerCase().includes(quote_status.toLowerCase())

      if (a && b && c) {
        return true
      }

      return false
    })
  })

此处 results 是来自后端的项目列表,从后端加载数据需要一点时间,然后崩溃并给出未定义的错误。此外,我需要将过滤后的列表传递到数据表中,就像这里一样。

    <DataTable
      noHeader
      size="sm"
      pagination
      columns={advSearchColumns}
      paginationPerPage={7}
      className="table-sm"
      sortIcon={<ChevronDown size={10} />}
      paginationDefaultPage={currentPage + 1}
      paginationComponent={CustomPagination}
      data={filteredItems} // Thats the filtered items 
    />

完整错误 ×

TypeError: Cannot read properties of undefined (reading 'filter')
1个回答

根据上面的注释,表明错误在此处抛出:

return results.filter((quote) => {

如果 results 未定义,则无法“过滤”任何内容。在这种情况下, filteredItems 应该返回什么?例如,您可以执行 null 检查以返回 null:

return results?.filter((quote) => {

或者,您可以有条件地返回一个空数组:

return results ? results.filter((quote) => {
  //...
}) : [];
David
2022-04-12