【问题标题】:Uncaught TypeError: Cannot convert undefined or null to object React未捕获的 TypeError:无法将 undefined 或 null 转换为对象 React
【发布时间】:2022-01-08 10:22:42
【问题描述】:

我的代码有一个奇怪的问题。有一个来自存储视频的 API 调用的对象,我需要添加网站上的视频数量。但有时可能会有来自 API 调用的“null”,显然,我不必显示 null 值的长度。

当我编写这段代码时,它在我尝试编辑器时有效,但是当我在我的项目中使用它时,它给出了一个错误,无法将未定义或 null 转换为对象。谁能给我一个想法或暗示我做错了什么?抱歉,如果我解释不清楚,这是我在这里的第一篇文章。谢谢!

const object = {
  background_video: null,
  vimeo_branded: 'video url',
  vimeo_unbranded: "video url"
}

const removeFalsyElement = object => {
  let sum = 0;
  Object.keys(object).forEach(key => {
    if (object[key]) {
      sum += 1;
    }
  });
  return sum;
};

console.log(removeFalsyElement(object)) // output should be 2.

【问题讨论】:

  • 我得到的输出为 2。顺便说一句,这个例子似乎没有重现您所面临的问题。请发帖minimal reproducible example
  • 我同意@kiner_shah。详细说明一下,从标题中的错误看来,在不同的环境中(当调用实际 API 时),您最终会遇到一些试图将未定义或空值转换为对象的代码。因此,您必须识别引发该错误的代码部分并发布该部分,或者将代码的整个部分发布到接收 API 响应和使用响应的位置。可能只是整个响应正文为空,并且代码从那里生成 undefined 或 null,您的代码无法正确处理。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: javascript reactjs object


【解决方案1】:

Object.keys 方法总是需要一个对象。如果我们传递 null 我们会得到上面提到的错误

const removeFalsyElement = (object = {}) => {//default value for object in case it is null. Object.keys needs an object always


let sum = 0;
  Object.keys(object).forEach(key => {
    if (object[key]) {
      sum += 1;
    }
  });
  return sum;
};

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 2019-10-25
    • 2021-12-07
    • 2022-10-24
    • 2023-01-20
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多