无法读取未定义的属性“替换”

时间:2019-08-06 16:50:28

标签: javascript reactjs

enter image description here enter code here enter image description here 我正在创建一个在线目录,每当我单击“更多信息”按钮时,都会得到replace

的无法读取属性undefined

我尝试重命名property,但仍然无法正常工作

let removeCom = this.props.itemInfo.description.replace("?", "").replace('<td width="110" height="">', "").replace("http://extranet.acetools.com/Catalog/","assets/img/items/").replace((/<INPUT[^>]*>/gmi), "").split('<CENTER><FONT COLOR="RED">', 1);
console.log(removeCom);

2 个答案:

答案 0 :(得分:0)

description之类的声音是不确定的。您可能需要检查以确保将prop正确传递到组件。

您也可以尝试将说明设置为默认值,这样就不会出现“无法读取未定义的属性'replace'的错误”错误。

const { itemInfo: { description = '' } = this.props;
let removeCom = description.replace("?", "").replace('<td width="110" height="">', "").replace("http://extranet.acetools.com/Catalog/","assets/img/items/").replace((/<INPUT[^>]*>/gmi), "").split('<CENTER><FONT COLOR="RED">', 1);

答案 1 :(得分:0)

这意味着两件事

itemInfo没有描述,或者您有拼写错误,因为当JavaScript找不到对象时,它返回 undefined ,因此您尝试访问undefined上的replace方法,例如undefined.replace( )

因此您的代码变为

let removeCom = this.props.itemInfo.undefined.replace("?", "").replace('<td width="110" height="">', "").replace("http://extranet.acetools.com/Catalog/","assets/img/items/").replace((/<INPUT[^>]*>/gmi), "").split('<CENTER><FONT COLOR="RED">', 1)
console.log(removeCom);

其他更安全的方法,您可以这样做

let { itemInfo } = this.props;
let removeCom;
if(itemInfo.description){
   removeCom  = itemInfo.description.replace("?", "").replace('<td width="110" height="">', "").replace("http://extranet.acetools.com/Catalog/","assets/img/items/").replace((/<INPUT[^>]*>/gmi), "").split('<CENTER><FONT COLOR="RED">', 1)
   console.log(removeCom);

}