首页 > 解决方案 > 映射函数 - 未处理的 JS 异常:TypeError:未定义不是评估映射的对象

问题描述

我有一个名为 displayKeyHelpers.ts 的文件,members.map代码位于第 118 行。该代码适用于大多数用户和 QA,但有时似乎成员未定义。我正在查看一份崩溃报告,上面写着

displayKeyHelpers.ts, line 118
SIGABRT: Unhandled JS Exception: TypeError: undefined is not an object (evaluating 'n.map') This error is located at: in V in Unknown in Unknown in Unknown..

下面函数中的成员似乎是未定义的。如何添加支票?

export const memberDropdownOptions = (members: any): Option[] => {
  const options: Option[] = []
  members.map((member: Person) => {
    options.push({
      label: `${member.firstName} ${member.lastName}`,
      value: member.dependentNumber,
    })
  })
  return options
}

这是我尝试过的,但它没有通过一些单元测试,所以我猜这是不对的:

export const memberDropdownOptions = (members: Person[]): Option[] => {
  const options: Option[] = []
  members?.map((member: Person) => {
    options.push({
      label: `${member?.firstName} ${member?.lastName}`,
      value: member?.dependentNumber,
    })
  })
  return options
}

该函数的使用如下:

const memberOptions = memberDropdownOptions(members)

标签: javascriptreactjstypescriptreact-native

解决方案


调用函数时未定义members您传递给的参数。memberDropdownOptions(members)

是否members依赖一些异步逻辑来被赋予一个值?追溯到它被赋值的地方,并确保memberDropdownOptions()只有在它有一个值时才会触发。


推荐阅读