27

我一直使用类似的东西

class MyComponent extends React.Component {
    constructor(props) {
        super(props)
        
        this.state = {
            var1 : undefined,
            var2 : 'etc...',
        }
    }
}

但是今天我注意到在 VS Code 中工作时有一条删除线super(props),这是以前从未有过的!?

在此处输入图像描述 发生了什么变化?(弹出窗口中的文档链接不是很有帮助)

4

5 回答 5

16

我的猜测是您的编辑器正在向您显示已弃用的 super(props, context) 签名的描述。它指向的那个链接是关于旧的上下文 API 是如何消失的,而那个特定的调用签名是即将消失的一部分。

但是,我还没有听说过平原super(props)消失,你应该可以安全地继续使用它。

于 2020-09-17T06:12:21.787 回答
12

它看起来像一个错误。请参阅 -这里的解释,并有一个来源的链接。

于 2020-11-04T21:15:22.613 回答
4

似乎是一个错误。如果您更新“@types/react”,它将解决问题。

npm install --dev @types/react

当你在@latest 上写你的代码时

npm install --also=dev @types/react
于 2021-01-13T13:02:48.127 回答
0

super(props)没有被弃用。请参阅官方文档 - https://reactjs.org/docs/react-component.html#constructor

这实际上不是一个错误。这是与代码编辑器、Typescript 和 React 相关的错误。你可以在这里阅读 - https://github.com/microsoft/TypeScript/issues/40511

好消息是这已解决。您可以在这里找到解决方案 - https://github.com/DefinitelyTyped/DefinitelyTyped/pull/47784

于 2021-07-24T12:25:25.683 回答
-5

只使用 super() 而不是 super(props)

超级(道具)

  • 通过使用 this,我们可以在构造函数中访问和使用this.props对象。

超级()

  • 如果您没有在构造函数中使用this.props,则无需将props传递给 super()。

  • 代替this.props,你总是可以使用props

  • 不将props传递给 super 是可以的,无论是否将其传递给 super,this.props在 render 函数中仍然可用。

    class MyComponent extends React.Component {
        constructor(props) {
            super();
    
            this.state = {
                 var1 : undefined,
                 var2 : 'etc...',
            };
        }
    }
    
于 2020-09-25T10:29:24.017 回答