programing

React 클래스 구성 요소에서 super()가 사용되지 않는 이유 이해

lastmoon 2023. 2. 26. 10:24
반응형

React 클래스 구성 요소에서 super()가 사용되지 않는 이유 이해

저는 React를 처음 접하며 최신 버전의 React를 사용한 React 컴포넌트의 라이프 사이클에 대해 배우고 있습니다.아래 부분 코드의 "슈퍼" 호출에는 사용되지 않는 경고가 표시됩니다.많은 문서들이 여전히 "슈퍼"를 사용하고 있고, 피드백에 링크된 전문 기사에서도 후속 문서가 무엇인지 알 수 없기 때문에 이 문서를 이해하는 데 어려움을 겪고 있습니다.좋은 생각 있어요?감사해요.

class App extends Component {
  constructor(props) {
    super(props);
  }
}

경고는 다음과 같습니다.

constructor React.Component<any, any, any>(props: any, context?: any): React:Component<any, any, any> (+1 overload)
@deprecated
@see - https://reactjs.org/docs/legacy-context.html
'(props: any, context?: any): Component<any, any, any>' is deprecated ts(6385)

당신은 필요하다super(props);만약 당신이 사용한다면this.props컨스트럭터 안에 있습니다.그렇지 않으면super();사용하시는 경우super();컨스트럭터에서 컨스트럭터 외부에서 호출하는 것은 문제가 되지 않습니다.this.props다음 링크에서 보실 수 있습니다.https://overreacted.io/why-do-we-write-super-props/

class Button extends React.Component {
  constructor(props) {
    super(); //we forgot to pass props
    console.log(props); //{}
    console.log(this.props); //undefined
  }
  // ...
}

컨스트럭터로부터 호출된 메서드에서 이 문제가 발생하면 더욱 어려워질 수 있습니다.그래서 저는 항상 물려주기를 권합니다super(props), 심지어 그것을 통해서도 필요하지 않습니다.

class Button extends React.Component {
  constructor(props) {
    super(props); //we passed props
    console.log(props); //{}
    console.log(this.props); //{}
  }
  // ...
}

super(props);아직 폐지되지 않았습니다.React 유형 정의 파일의 버그로 인해 실제로 더 이상 사용되지 않는 메시지는 @types/react 16.9.51에서 이미 수정되었습니다. 패키지를 업그레이드하면 바로 사용할 수 있습니다.

npm install @types/react

옵션의 컨텍스트파라미터는 레거시 React 컨텍스트(v16.3 이전)를 참조하기 때문에 권장되지 않는 것 같습니다.어떤 버전의 React를 사용하고 있습니까?

https://reactjs.org/docs/legacy-context.html

TypeScript에서 React를 사용한 적이 없습니다.리액트 매핑이 최신이 아닐 수 있습니다.

이건 jslint의 버그인 것 같아요.코드가 컨텍스트 파라미터를 사용하지 않는 것이 분명합니다.

언급URL : https://stackoverflow.com/questions/63856962/understanding-why-super-is-deprecated-in-a-react-class-component

반응형