Soy nuevo en React y estoy aprendiendo sobre el ciclo de vida del componente React con la última versión de React. Mi llamada "super" del código parcial a continuación está marcada con la advertencia obsoleta que se muestra. He tenido problemas para entender este, ya que mucha documentación todavía usa "super", y no estoy seguro de cuál es el sucesor, incluso del artículo completo vinculado en los comentarios. ¿Algunas ideas? Gracias.
class App extends Component { constructor(props) { super(props); } }Aquí está la advertencia:
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); aún no está en desuso. El mensaje de obsolescencia en realidad se debió a un error en el archivo de definición de tipo de React y ya está solucionado a partir de @types/react 16.9.51 . Simplemente actualice el paquete y estará listo para comenzar:
npm install @types/reactParece que el parámetro de contexto opcional está en desuso porque se refiere al contexto React heredado (anterior a la versión 16.3). ¿Qué versión de React estás usando?
https://reactjs.org/docs/legacy-context.html
No he usado React con TypeScript. Tal vez las asignaciones de React estén desactualizadas.
Creo que esto es un error en jslint. El código obviamente no está usando el parámetro de contexto.
Necesitas super(props); solo si vas a usar this.props en el constructor. De lo contrario, puede usar super(); Si usa super(); en el constructor no es un problema que fuera del constructor llames this.props . Puedes leer sobre ello en el siguiente enlace: 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 } // ... } Puede ser aún más desafiante si esto sucede en algún método llamado desde el constructor. Y es por eso que siempre recomiendo pasar super(props) , aunque no sea necesario.
class Button extends React.Component { constructor(props) { super(props); //we passed props console.log(props); //{} console.log(this.props); //{} } // ... }