Reactjs 财产';组件堆栈';不存在于类型';字符串';。ts
我正在使用Typescript和React实现一个ErrorBoundary TSLint显示错误Reactjs 财产';组件堆栈';不存在于类型';字符串';。ts,reactjs,typescript,typescript-generics,Reactjs,Typescript,Typescript Generics,我正在使用Typescript和React实现一个ErrorBoundary TSLint显示错误类型“string”上不存在属性“componentStack” 这是我的代码实现 interface-IState{ 信息:错误信息; } 公共国家={ 错误信息:“”, }; 公共组件DIDCATCH(错误:错误,错误信息:错误信息){ 这是我的国家({ 错误信息 }); } 公共渲染(){ if(this.state.errorInfo){ 返回( {this.state.errorInfo
类型“string”上不存在属性“componentStack”
这是我的代码实现
interface-IState{
信息:错误信息;
}
公共国家={
错误信息:“”,
};
公共组件DIDCATCH(错误:错误,错误信息:错误信息){
这是我的国家({
错误信息
});
}
公共渲染(){
if(this.state.errorInfo){
返回(
{this.state.errorInfo.componentStack}
);
}
}
您在此处将errorInfo
隐式声明为字符串:
public state = {
errorInfo: "",
};
因此,要键入脚本,存储在errorInfo
中的内容是一个字符串<代码>组件堆栈
不能存在于字符串中
这就是为什么会出现错误
您应该声明如下内容:
public state: {
errorInfo: string | { componentStack: Function, },
} = {
errorInfo: "",
};
并完成state
对象内部内容的描述
如果您不知道,也可以使用any
public state: any = {
errorInfo: "",
};
无论如何,您应该在调用它之前测试componentStack
是否存在,以防errorInfo
确实是一个空的字符串
if (this.state.errorInfo && typeof this.state.errorInfo.componentStack === 'Function') {
{this.state.errorInfo.componentStack}
}
我将状态更改为js public state={errorInfo:{componentStack:Function},}代码>正如您所说的jsx`{this.state.errorInfo&&this.state.errorInfo.componentStack}
,非常感谢:)