You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -636,174 +636,77 @@ Muestra el botón para eliminar una publicación de blog solo si la publicación
636
636
637
637
<divclass="content">
638
638
639
-
### PropTypes
640
-
641
-
El componente <i>Togglable</i> asume que se le da el texto para el botón a través del prop <i>buttonLabel</i>. Si nos olvidamos de definir este prop al componente:
642
-
643
-
```js
644
-
<Togglable> buttonLabel forgotten...</Togglable>
645
-
```
646
-
647
-
La aplicación funciona, pero el navegador muestra un botón sin texto.
648
-
649
-
Nos gustaría hacer cumplir que cuando se usa el componente <i>Togglable</i>, se debe dar un valor al prop de texto del botón.
650
-
651
-
Los props esperados y requeridos de un componente se pueden definir con el paquete [prop-types](https://github.com/facebook/prop-types). Instalemos el paquete:
652
-
653
-
```shell
654
-
npm install prop-types
655
-
```
656
-
657
-
Podemos definir el prop <i>buttonLabel</i> como un prop obligatorio o <i>required</i> de tipo string como se muestra a continuación:
658
-
659
-
```js
660
-
importPropTypesfrom'prop-types'
661
-
662
-
constTogglable=React.forwardRef((props, ref) => {
663
-
// ..
664
-
})
665
-
666
-
Togglable.propTypes= {
667
-
buttonLabel:PropTypes.string.isRequired
668
-
}
669
-
```
670
-
671
-
La consola mostrará el siguiente mensaje de error si el prop se deja sin definir:
639
+
### ESlint
672
640
673
-

641
+
En la parte 3 configuramos la herramienta de estilo de código [ESlint](/es/part3/validacion_y_es_lint#lint) para el backend. Utilicemos ESlint también en el frontend.
674
642
675
-
La aplicación todavía funciona y nada nos obliga a definir props a pesar de las definiciones de PropTypes. Eso sí, es extremadamente poco profesional dejar <i>cualquier</i> output de color rojo en la consola del navegador.
643
+
Vite ha instalado ESlint en el proyecto de forma predeterminada, por lo que todo lo que nos queda por hacer es definir nuestra configuración deseada en el archivo <i>eslint.config.js</i>.
676
644
677
-
También definamos PropTypes para el componente <i>LoginForm</i>:
645
+
Creemos un archivo <i>eslint.config.js</i> con el siguiente contenido:
Si el tipo de un prop pasado es incorrecto, por ejemplo, si intentamos definir el prop <i>handleSubmit</i> como un string, esto resultará en la siguiente advertencia:
702
-
703
-

704
-
705
-
### ESlint
706
-
707
-
En la parte 3 configuramos la herramienta de estilo de código para el backend [ESlint](/es/part3/validacion_y_es_lint#lint). Utilicemos ESlint también en el frontend.
708
-
709
-
Vite ha instalado ESlint en el proyecto de forma predeterminada, por lo que todo lo que nos queda por hacer es definir nuestra configuración deseada en el archivo <i>.eslintrc.cjs</i>.
710
-
711
-
Creemos un archivo <i>.eslintrc.js</i> con el siguiente contenido:
694
+
NOTA: Si estás utilizando Visual Studio Code junto con el plugin ESLint, es posible que debas agregar una configuración de espacio de trabajo adicional para que funcione. Si ves <i>Failed to load plugin react: Cannot find module 'eslint-plugin-react'</i>, necesitas una configuración adicional. Agregar la siguiente línea a settings.json puede ayudar:
NOTA: Si estás utilizando Visual Studio Code junto con el plugin ESLint, es posible que debas agregar una configuración de espacio de trabajo adicional para que funcione. Si ves ```Failed to load plugin react: Cannot find module 'eslint-plugin-react'```, necesitas una configuración adicional. Agregar la línea ```"eslint.workingDirectories": [{ "mode": "auto" }]``` a settings.json en el espacio de trabajo parece funcionar. Mira [esto](https://github.com/microsoft/vscode-eslint/issues/880#issuecomment-578052807) para obtener más información.
764
-
765
-
Vamos a crear un archivo [.eslintignore](https://eslint.org/docs/latest/use/configure/ignore#the-eslintignore-file) con el siguiente contenido en la raíz del repositorio
766
-
767
-
```bash
768
-
node_modules
769
-
dist
770
-
.eslintrc.cjs
771
-
vite.config.js
697
+
"eslint.workingDirectories": [{ "mode":"auto" }]
772
698
```
773
699
774
-
Ahora los directorios <em>dist</em> y <em>node_modules</em> se omitirán al realizar el linting.
700
+
Consulta [esto](https://github.com/microsoft/vscode-eslint/issues/880#issuecomment-578052807) para obtener más información.
775
701
776
-
Como de costumbre, puedes realizar el linting desde la línea de comandos con el siguiente comando:
702
+
Como de costumbre, puedes realizar el linting desde la línea de comandos con el siguiente comando
777
703
778
704
```bash
779
705
npm run lint
780
706
```
781
707
782
708
o usando el plugin de Eslint del editor.
783
709
784
-
El componente _Togglable_ está causando una advertencia desagradable <i>Component definition is missing display name</i>:
785
-
786
-

787
-
788
-
Las react-devtools también muestran que el componente no tiene un nombre:
789
-
790
-

Puedes encontrar el código para nuestra aplicación actual en su totalidad en la rama <i>part5-7</i> de [este repositorio de GitHub](https://github.com/fullstack-hy2020/part2-notes-frontend/tree/part5-7).
808
711
809
712
</div>
@@ -814,8 +717,8 @@ Puedes encontrar el código para nuestra aplicación actual en su totalidad en l
814
717
815
718
#### 5.12: Frontend de la Lista de Blogs, paso 12
816
719
817
-
Define PropTypes para uno de los componentes de tu aplicación y agrega ESlint al proyecto. Define la configuración según tu preferencia. Corrige todos los errores del linter.
720
+
Agrega ESlint al proyecto. Define la configuración según tu preferencia. Corrige todos los errores del linter.
818
721
819
-
Vite ha instalado ESlint en el proyecto por defecto, así que todo lo que queda por hacer es definir tu configuración deseada en el archivo <i>.eslintrc.cjs</i>.
722
+
Vite ha instalado ESlint en el proyecto por defecto, así que todo lo que queda por hacer es definir tu configuración deseada en el archivo <i>eslint.config.js</i>.
0 commit comments