Que es esto
Esta es una revisión de código de las soluciones de la segunda tarea de prueba . El video muestra soluciones exitosas y errores, así como consejos para solucionarlos. Esta nota identifica problemas comunes y proporciona enlaces con una "marca de tiempo".

Problemas comunes
- Léame malo;
- Hay advertencias de Eslint, extra
console.log
(redux-logger no cuenta); - El icono de la web no avanzó (lectura desatendida de la tarea);
- El ícono Web se empuja hacia adelante en el componente (y sería mejor en el reductor o acción);
- La contraseña no se borra si la solicitud se devuelve con un error;
- Un botón de envío en el formulario de inicio de sesión está disponible si los campos están vacíos (o uno de los campos);
- El botón Enviar en el formulario de inicio de sesión no admite presionar Entrar;
- No se divide en componentes / contenedores (no se aplica a aquellos que comparten otros enfoques);
- La URL para las solicitudes al servidor se transmite completamente (no existe un diseño de la parte repetitiva de la cadena como una constante)
- Error / notificación "nombre de usuario / contraseña incorrectos" - no se borra;
- El error "nombre de usuario / contraseña incorrecto" es emitido por una constante del servidor;
- El texto del error está codificado en el código. No hay acceso al diccionario por constante desde el servidor;
- El "código antiguo" no se ha eliminado, es decir, el código que no se usa en ningún lado;
- Las promesas no tienen un bloque catch, no hay manejo de errores si el servidor responde
ok
; - Los componentes están alojados en node_modules;
- Faltan los tipos de utilería o están descritos de manera inadecuada.
- Acciones y reductores en el montón en un archivo (o en uno todas las acciones, en el otro todos los reductores). No hay división en "módulos", es decir, cada entidad: sus propias acciones y sus reductores;
Todas las soluciones con sello de tiempo
Aquí solo se indican los errores, y no se observan puntos buenos, de los cuales hay muchos, por lo que recomiendo ver todo en una fila a aquellos que se consideran "junio" en desarrollo al reaccionar.
6m00s - Arthur Donkovtsev Commit
7m40s - error tipográfico en el nombre de la función
8m07s - las solicitudes asincrónicas no se ponen en acción
9m30s - Pavel Pimkin Commit
10m07s : todas las acciones en un archivo. No dividir en módulos.
10m25s : la eliminación del icono (enumeración de datos) se realiza en el componente. Mejor en un reductor o acción.
11m42s Sergey ZackFox Commit
12m28s - inscripciones "geniales". Es mejor hacerlo "neutralmente" para que tareas similares puedan enviarse inmediatamente al empleador.
13m05s : una acción adicional que indica que la "descarga" se ha completado. Es decir, en lugar de tres acciones: SOLICITAR / ÉXITO / DETENER, puede cumplir dos: SOLICITAR / ÉXITO.
16m16s - Dmitry Petrov Commit
18m16s - usando var
18m34s - parte de la dirección URL no constante
21m15s - Yefim Bread Commit
21m17s - mensaje de confirmación erróneo
22m15s son los mismos nombres de acción.
24m16s - Katsura Vladislav se compromete
25m17s - (no es un error) - datos preparados en un reductor
27m38s - usando e.target
, mejor e.currentTarget
28m20s - ==
, pero sería necesario ===
28m33s - usando componentWillUnmount
29m00s (no es un error): razonamiento sobre "antes de la validación del servidor".
30m05s - el código no está formateado (para un aficionado)
30m33s - Maxim Safin Commit
31m35s - utilizando un controlador "no universal", cuando corresponda.
32m02s - Sergey Regies Linkas Commit
33m42s : ninguna acción para el precargador
34m30s - el orden de los métodos en el componente. ( complemento de eslint )
35m30s - PropTypes inexistentes
35m57s - Kononov Vitaly Commit
38m02s - Renat Rysaev Commit
39m45s - no hagas lo que no es interesante
40m31s - Evgeny Sanzhiev Commit
41m20s (no es un error) - diccionario para trabajar con errores
42m46s - Vitaliy Embankment Commit
42m54s - datos de prueba no limpiados
44m50s - Compromiso de Veniamin Trepachko
Logro: diseño muy genial.
47m42s - la versión redux no está completa.
47m57s - Ingvarr6 (Igor) Commit
48m21s - sin rutas 404
51m20s - Catherine H Commit
51m30s - el error no se borra
54m48s - Compromiso palestino romano
55m30s - no hay suficientes acciones de descarga / error
56m49s - uso de efectos secundarios en un reductor
58m10s - (no es un error) sacar el ícono web usando css (¡enfermo!)
58m53s - Umyar Yusupov Commit
59m15s : uso de devolución de llamada en setState, lo que conduce a un rediseño innecesario. Es mejor validar directamente en el render.
61m01s - uso inapropiado de else si
62m13s - dsfcv d (boortcore) Commit
63m15s Konstantin Lipsky Commit
65m11s : la URL completa se pasa a la acción, es mejor pasar la identificación en esta opción.
67m14s - Ikaow Ikaow Commit
67m50s es una condición difícil en shouldComponentUpdate, puede ser más simple (verifique inmediatamente props.data y listo)
69m32s - e.preventDefault
no e.preventDefault
el primero en el controlador
70m01s - Ali Gasymov Commit
71m50s - Akhmetanov Albert Commit
72m20s - componentes en node_modules
73m15s - llamadas variables duplicadas
74m04s - Eugene White Commit
76m04s - privateRoute no se movió a un componente separado
76m33s : código complejo para mover iconos web
76m56s - propiedad redundante cargada
77m35s - Aladyin Alexander Commit
80m33s - error no realizado en el diccionario
81m19s - Misha Mihail Commit
81m43s - uso redundante con withRouter
83m04s - Dmitrii Shapovalenko Commit
84m00s - Daniel Commit
84m58s - división de acción redundante
85m55s - error en el nombre del método del ciclo de vida
86m58s - Poroshin Roman Commit
87m15s - uso semánticamente incorrecto de la etiqueta del article
90m46s : una llamada adicional al método de matriz
91m10s - Artem Bochkov Commit