使用打字稿时方法React getDerivedStateFromProps问题

时间:2018-09-05 08:02:17

标签: reactjs typescript tslint

使用tslint。 我们有以下代码:

export default class TableCell extends React.PureComponent<IProps, IState> {
  static getDerivedStateFromProps(nextProps: IProps, prevState: IState) {
    return nextProps.status !== prevState.status ? {
      status: nextProps.status
    } : null;
  }

  constructor(props: any){
    super(props);
    this.state = {
      status: props.status
    };
  }

  ...
}

这会导致以下错误: 类方法“ getDerivedStateFromProps”必须标记为“私有”,“公开”或“受保护”

出什么问题了?

1 个答案:

答案 0 :(得分:0)

欢迎您!您可以尝试将该方法明确标记为公共方法吗?

export default class TableCell extends React.PureComponent<IProps, IState> {
  public static getDerivedStateFromProps(nextProps: IProps, prevState: IState) {
    return nextProps.status !== prevState.status ? {
      status: nextProps.status
    } : null;
  }

  constructor(props: any){
    super(props);
    this.state = {
      status: props.status
    };
  }
}

这将使TS知道任何代码都可以从类外部调用静态方法。