What it is?
This is the code review of the second test case . The video marked successful solutions and indicated errors, as well as tips for correcting them. This article notes common problems and provides links with a “time stamp”.

Common problems
- Bad Readme;
- There are eslint warnings, extra
console.log
(redux-logger does not count); - Web icon is not brought forward (inattentive reading of the task);
- The Web icon is brought forward in the component (or it would be better in the reducer, or action);
- The password is not cleared if the request is returned with an error;
- Submit button in the form of a login is available if the fields are empty (or one of the fields);
- Submit button in the form of login does not support pressing Enter;
- No division into components / containers (does not apply to those who divided by other approaches);
- URL for requests to the server is completely transmitted (there is no registration of the repeating part of the string in a constant)
- Error / notification "incorrect username / password" - not cleared;
- Error "incorrect username / password" - displayed by a constant from the server;
- The text of the error is "hardcoded" in the code. There is no access to the dictionary for a constant from the server;
- The “old code” is not deleted, that is, such code that is not used anywhere;
- There is no catch block for promises, no error handling if the server responds not
ok
; - Components are placed in node_modules;
- Prop Types are missing or insufficiently described.
- Actions and reducers in a heap in one file (or in one all actions, in another all reducers). There is no division into "modules", that is, each entity - its own actions and its reducers;
All solutions with time stamps.
Here, only errors are indicated, and there are no good points that are great, so I highly recommend that everyone who sees himself as a “june” in the design on react should look at everything.
6m00s - Arthur Donkovtsev Commit
7m40s - typo in function name
8m07s - asynchronous requests are not made in actions
9m30s - Pavel Pimkin Commit
10m07s - all actions in one file. No division into modules.
10m25s - removal of the icon (data lookup ) is made in the component. Better in a reducer or an action game.
11m42s Sergey ZackFox Commit
12m28s - "cool" inscriptions. It is better to do "neutral", so that such tasks can be immediately sent to the employer.
13m05s - extra action, indicating that the "download" is completed. That is, instead of three actions: REQUEST / SUCCESS / STOP, you can keep within two: REQUEST / SUCCESS.
16m16s - Dmitri Petrov Commit
18m16s - use var
18m34s - the part of the URL is not rendered in a constant
21m15s - Efim Hlebny Commit
21m17s - bad message in commit
22m15s - the same action names.
24m16s - Katsura Vladislav Commit
25m17s - (not an error) - data are prepared in a reducer
27m38s - use e.target
, better e.currentTarget
28m20s - ==
, but it would be necessary ===
28m33s - using componentWillUnmount
29m00s (not an error) - reasoning about "before server validation".
30m05s - code is not formatted (for an amateur)
30m33s - Maxim Safin Commit
31m35s - using a "non-universal" handler, where appropriate.
32m02s - Sergey Regies Linkas Commit
33m42s - no action for preloader
34m30s - the order of the methods in the component. ( eslint plugin )
35m30s - not existing PropTypes
35m57s - Kononov Vitaly Commit
38m02s - Renat Rysaev Commit
39m45s - do not do what is not interesting
40m31s - Evgeny Sanzhiev Commit
41m20s (not an error) - dictionary for work with errors
42m46s - Vitaly Naberezhny Commit
42m54s - test data not removed
44m50s - Veniamin Trepachko Commit
Achivka: very cool design.
47m42s - redux version is not complete.
47m57s - Ingvarr6 (Igor) Commit
48m21s - no 404 routes
51m20s - Catherine N Commit
51m30s - no error cleared
54m48s - Roman Palesica Commit
55m30s - not enough action to load / error
56m49s - using side-effects in the reducer
58m10s - (not an error) takeaway web icons with css (sick!)
58m53s - Umyar Yusupov Commit
59m15s - use callback'a setState, which leads to unnecessary redrawing. It is better to validate directly in the render.
61m01s - inappropriate use else if
62m13s - dsfcv d (boortcore) Commit
63m15s Konstantin Lipsky Commit
65m11s - the entire URL is transmitted to the action, it is better to simply transmit the id in this variant.
67m14s - Ikaow Ikaow Commit
67m50s - a complex condition in shouldComponentUpdate, it can be easier (just check on props.data and that's it)
69m32s - e.preventDefault
not the first in the handler
70m01s - Ali Gasymov Commit
71m50s - Akhmetanov Albert Commit
72m20s - components in node_modules
73m15s - duplication of references to variables
74m04s - Marrying White Commit
76m04s - privateRoute is not in a separate component
76m33s - complex code for moving web icons
76m56s - redundant loaded property
77m35s - Aladin Alexander Commit
80m33s - the error is not submitted to the dictionary
81m19s - Misha Mihail Commit
81m43s - excessive use withRouter
83m04s - Dmitrii Shapovalenko Commit
84m00s - Daniel Commit
84m58s - Excessive Action Division
85m55s - error in the name of the lifecycle method
86m58s - Poroshin Roman Commit
87m15s - semantically incorrect use of the article
tag
90m46s - an extra call to the array method
91m10s - Artem Bochkov Commit