使用shouldComponentUpdate
的TypeScript错误:
类型为“ Hello”的属性“ shouldComponentUpdate”不能分配给基本类型为
Component<IProps, any, any>
的相同属性。
在组件中:
import React, { Component } from 'react'
class Hello extends Component<IProps, any> {
shouldComponentUpdate(nextProps: IProps) { // error here
console.log(nextProps, 'nextProps')
}
....// some code
}
有人可以向我解释我在做什么错吗?
答案 0 :(得分:1)
我认为,这是由于预计shouldComponentUpdate
将返回布尔值。您正在返回void
,因为您没有明确返回任何内容。默认值是返回true,因此只需在函数中的最终声明中解决该问题即可添加。
有关更多信息,请参见例如react文档:https://reactjs.org/docs/react-component.html#shouldcomponentupdate。
答案 1 :(得分:1)
将React与TypeScript一起使用会有些烦人,因为今天的最后一个并不包含所有必需的错误描述技巧。因此,您遇到的错误可能与来自return
方法的未完成的shouldComponentUpdate
调用绑定在一起。
尝试下一个,看看会发生什么:
shouldComponentUpdate(nextProps: IProps) { // error here
console.log(nextProps, 'nextProps')
return true
}
答案 2 :(得分:1)
Typescript希望您定义每个传递的参数的类型以及return
ed值的类型。如果您的函数没有return语句,则可以使用: void
。
shouldComponentUpdate(nextProps: IProps): void {
console.log(nextProps, 'nextProps')
}