Tutorial React Parte 13: Componentes basados ​​en clases

Hoy publicamos una traducción del próximo tutorial de React. Se enfoca en componentes basados ​​en clases. Dichos componentes se crean utilizando la palabra clave de clase.

imagen

Parte 1: descripción general del curso, razones de la popularidad de React, ReactDOM y JSX
Parte 2: componentes funcionales
Parte 3: archivos de componentes, estructura del proyecto
Parte 4: componentes principales y secundarios
Parte 5: inicio del trabajo en una aplicación TODO, los fundamentos del estilo
Parte 6: sobre algunas características del curso, JSX y JavaScript
Parte 7: estilos en línea
Parte 8: trabajo continuo en la aplicación TODO, familiaridad con las propiedades de los componentes
Parte 9: propiedades del componente
Parte 10: Taller sobre trabajo con propiedades de componentes y estilo
Parte 11: generación de marcado dinámico y método de matrices de mapas
Parte 12: taller, tercera etapa de trabajo en una aplicación TODO
Parte 13: componentes basados ​​en clases
Parte 14: taller sobre componentes basados ​​en la clase, estado de los componentes.
Parte 15: talleres de componentes de salud
Parte 16: la cuarta etapa de trabajo en una aplicación TODO, manejo de eventos
Parte 17: quinta etapa de trabajo en una aplicación TODO, modificando el estado de los componentes
Parte 18: la sexta etapa de trabajo en una aplicación TODO
Parte 19: métodos del ciclo de vida de los componentes.
Parte 20: la primera lección de representación condicional
Parte 21: segunda lección y taller sobre representación condicional
Parte 22: la séptima etapa de trabajo en una aplicación TODO, descargando datos de fuentes externas
Parte 23: primera lección sobre trabajar con formularios
Parte 24: Segunda lección de formularios
Parte 25: Taller sobre trabajo con formularios
Parte 26: arquitectura de la aplicación, patrón de contenedor / componente
Parte 27: proyecto del curso

Lección 24. Componentes basados ​​en clases


Original

Si, antes de comenzar a dominar este curso de capacitación, estudió React en base a otros cursos, es posible que tenga una pregunta sobre el hecho de que aquí usamos componentes funcionales. El hecho es que en muchos otros cursos este tema no está cubierto o se habla de componentes funcionales como algo que no es particularmente necesario. Algunos autores van más allá y dicen que es mejor no usar componentes funcionales, prefiriendo componentes basados ​​en clases. Esto, en su opinión, salva al programador de cargas innecesarias. Creo que cualquiera que estudie React encontrará útil ver la imagen completa y aprender acerca de los enfoques de componentes que son populares en estos días. En particular, ahora la dirección es relevante, de acuerdo con los componentes funcionales que se usan siempre que sea posible, y los componentes basados ​​en clases solo donde realmente se necesitan. Cabe señalar que todo esto es solo una recomendación. Cada desarrollador decide exactamente cómo diseñará sus aplicaciones.

Cuando enseño cursos de React, prefiero comenzar con componentes funcionales, porque las funciones son construcciones claras. Una sola mirada a un componente funcional es suficiente para comprender exactamente qué acciones realiza. Digamos, aquí está el código de un componente funcional, que es una función regular que devuelve un elemento <div> que contiene un elemento <h1> con algo de texto.

 function App() {   return (       <div>           <h1>Code goes here</h1>       </div>   ) } 

Pero, a medida que profundizamos en el estudio de React, nos familiarizamos con sus capacidades, resulta que los componentes funcionales no pueden ofrecernos todo lo que podamos necesitar de React-components. Por lo tanto, hoy hablaremos de componentes basados ​​en clases. Es decir, comencemos creando un componente basado en una clase que realice las mismas acciones que el componente funcional anterior. En la próxima lección, tocaremos esas características adicionales que nos dan componentes basados ​​en clases. En particular, estamos hablando de la posibilidad de trabajar con el estado de los componentes y con los métodos de su ciclo de vida.

Convierta un componente funcional en un componente basado en una clase. Si no está particularmente familiarizado con la palabra clave de class , que apareció en ES6, y con las posibilidades que se abre para los desarrolladores, se recomienda que se tome un tiempo para conocer mejor las clases .

Las descripciones de componentes basadas en clases comienzan con la palabra clave class . Luego viene el nombre del componente, compilado de acuerdo con las mismas reglas que los nombres de los componentes funcionales. Al mismo tiempo, después de una construcción como class App no va a ser algo así como un aparato ortopédico, pero una construcción del formulario extends React.Component . Después de eso, coloque un par de llaves en las que se describirá el cuerpo de la clase.

Las clases en JavaScript son un complemento del modelo tradicional de herencia prototipo. La esencia de la construcción de la class App extends React.Component es que declaramos una nueva clase y React.Component que su prototipo debería ser React.Component . La presencia de este prototipo en nuestro componente nos permite utilizar todas las funciones útiles que están disponibles en React.Component en este componente.

Entonces, en esta etapa de trabajo en un componente basado en clases, su código se ve así:

 class App extends React.Component {  } 

Un componente basado en clases debe tener al menos un método. Este es el método render() . Este método debería devolver el mismo que usualmente regresamos de los componentes funcionales. Así es como se ve el código completo de un componente basado en clases, implementando las mismas características que el componente funcional anterior.

 class App extends React.Component {   render() {       return (           <div>               <h1>Code goes here</h1>           </div>       )   } } 

Trabaje con componentes basados ​​en clases de la misma manera que los componentes funcionales. Es decir, en nuestro caso, es suficiente reemplazar el código del componente funcional con el nuevo código y la aplicación funcionará como antes.

Hablemos del método render() . Si, antes de formar los elementos devueltos por este método, necesita realizar algunos cálculos, se realizan en este método, antes del comando de return . Es decir, si tiene algún código que determina el orden en que se forma la presentación visual del componente, este código debe colocarse en el método de render . Por ejemplo, aquí puede personalizar estilos si usa estilos incorporados. También habrá código que implemente el mecanismo de representación condicional y otras construcciones similares.
Si está familiarizado con las clases, puede crear su propio método y colocar el código que prepara el componente para su visualización, y luego llamar a este método en el método de render . Se ve así:

 class App extends React.Component {     yourMethodHere() {         }     render() {       const style = this.yourMethodHere()       return (           <div>               <h1>Code goes here</h1>           </div>       )   } } 

A saber, aquí procedemos de la suposición de que en el método yourMethodHere() se generan yourMethodHere() estilos, y lo que devuelve se escribe en la constante de style declarada en el método render() . Tenga en cuenta que la palabra clave this usa para acceder a nuestro propio método. Más adelante hablaremos sobre las características de esta palabra clave, pero por ahora centrémonos en el diseño presentado aquí.

Ahora hablemos sobre cómo trabajar con las propiedades pasadas a las clases al crear instancias de ellas en componentes basados ​​en clases.

Cuando usamos componentes funcionales, declaramos la función correspondiente con el parámetro props , que es un objeto que recibió lo que se pasó al componente cuando se instanciaron. Se ve así:

 function App(props) {   return (       <div>           <h1>{props.whatever}</h1>       </div>   ) } 

Cuando se trabaja con un componente basado en una clase, lo mismo se ve así:

 class App extends React.Component {   render() {       return (           <div>               <h1>{this.props.whatever}</h1>           </div>       )   } } 

Resumen


Como ya se mencionó, los componentes basados ​​en clases le dan al desarrollador muchas opciones. Hablaremos más sobre estas características. Y ahora puede experimentar con lo que aprendió hoy y prepararse para una lección práctica sobre componentes basados ​​en clases.

Estimados lectores! Si está utilizando React profesionalmente, díganos en qué situaciones utiliza componentes funcionales y en qué componentes basados ​​en clase.

Source: https://habr.com/ru/post/437990/


All Articles