javascript - 如何解决无法读取属性“长度”?[反应]
问题描述
我正在尝试获取对象的长度,但收到此错误消息:
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);
}
};
解决方案
您现在编写的方式无法处理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
。
推荐阅读
- sql - SSIS 作业失败 - 拒绝访问平面文件
- c - 从 Int 10h/AX=4F00h 检索 VESA 视频模式列表
- swift - 如何用 CLLocationDegrees 解决这个问题?
- java - 通过在 java 中设置 cookie 进行身份验证,在浏览器中打开网页
- email - 邮件客户端发件人图片
- ios - 应用旋转为横向和纵向,但不会倒置旋转
- codeblocks - code::blocks 不会将我的设置保存为默认设置
- r - 组合两个相同/不同名称的数据框
- java - 在 java play scheduler 任务中注入一个类实例
- ballerina - 芭蕾舞演员的运行时间问题