React .trim()不是函数

时间:2018-08-22 15:05:50

标签: javascript reactjs typeerror

我的应用程序有一个登录页面,在两个单独的标签中包含两个组件。

导致崩溃的第一个组件中的代码如下:

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在渲染后如何处理刷新组件的方式有关,有人可以帮我解决一下:)

2 个答案:

答案 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()

因此该代码必须执行多次。