首页 > 解决方案 > 如何解决无法读取属性“长度”?[反应]

问题描述

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

Uncaught TypeError: Cannot read property 'length' of undefined

我正在尝试获取长度并在长度为零时弹出一个窗口。

我尝试使用this.props.storyboardTargets.length === 0

案例 1:数据不可用所以(!this.props.storyboardTargets)-->undefined

案例2:数据存在,后来被删除或清除,所以需要检查长度

下面是我的代码:

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

标签: javascriptreactjs

解决方案


您现在编写的方式无法处理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。那样永远不会undefined


推荐阅读