我的应用程序有一个登录页面,在两个单独的标签中包含两个组件。
导致崩溃的第一个组件中的代码如下:
for (let key in linegraphdata) {
linegraphdata[key].price = Number(
linegraphdata[key].price.trim().slice(1)
);
linegraphdata[key].month = parseDate(linegraphdata[key].month);
}
当我最初加载到应用程序中时,它不会崩溃,请从第一个选项卡中加载数据。我将单击第二个选项卡,当我最终单击回来时,整个应用程序崩溃,并且日志显示此错误:
Uncaught TypeError: linegraphdata[key].price.trim is not a function
它必须与React在渲染后如何处理刷新组件的方式有关,有人可以帮我解决一下:)
答案 0 :(得分:2)
linegraphdata[key].price
为null或不是字符串。
如果有一个值,您可以尝试使用linegraphdata[key].price.toString().trim().slice(1)
您可以使用此三进制检查价格是否为字符串。如果不是字符串,则将值设置为-1
linegraphdata[key].price = Number(
typeof linegraphdata[key].price == 'string' ? linegraphdata[key].price.trim().slice(1) : -1
);
答案 1 :(得分:1)
您正在将writeFile
设置为string
,并且数字上没有number
方法。这就是为什么它第一次(当是字符串时)而不是第二次起作用的原因:
trim()
因此该代码必须执行多次。