属性“ shouldComponentUpdate”不可分配给同一属性

时间:2018-12-05 13:01:40

标签: javascript reactjs typescript

使用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
}

有人可以向我解释我在做什么错吗?

3 个答案:

答案 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')
  }