开发者问题收集

如何解决无法读取属性“length”?[reactjs]

2018-07-09
77

我正在尝试获取一个对象的长度,但是正在获取此错误消息:

uck typeerror:无法读取未定义的

<的属性'长度' p>我试图在长度为零时获得长度并获得弹出窗口。

我尝试使用 this.props.storyboardtargets.lengths.length === 0

案例1:数据不可用,因此 (!this.props.storyboardtargets) - &gt; 未定义的

情况2:数据在那里,然后删除或清除,因此需要检查长度

这是我的代码:

<代码> 340178846
3个回答

您现在的编写方式无法处理 this.props.storyboardTargets 可能未定义的问题。您需要像这样更新它:

handleShowPopupTarget = () => {
    if (!this.props.storyboardTargets || !this.props.storyboardTargets.length) {
        console.log(this.props.storyboardTargets);
        toastWarning(WARNING_MSG_NO_TARGET);
    }
};

这意味着如果 storyboardTargets 未定义, 或其长度为 0,则将触发 toastWarning

作为替代方案,您可以为 storyboardTargets 的空数组定义一个默认 prop。这样它就永远不会是 undefined

Ted
2018-07-09

错误消息意味着 storyboardTargets 未定义。尝试查看 storyboardTargets 是否被传递到包含 handleShowPopupTarget 方法的组件。

Sasha K.
2018-07-09

使用 lodash get ,它简化了很多这类错误检查:

_.get(this.props, 'storyboardTargets.length', 'default'); // you could use 0 instead of 'default' in your case
Lafi
2018-07-09