Conversation
|
Замечания по работе калькулятора:
20220119_135332.mp4 |
|
В целом, неплохо для первой самостоятельной работы, основное реализовал! |
| return ( | ||
| <div className="display"> | ||
| <div className="display_text-field"> | ||
| {currentOperand?.length > 11 ? ( |
There was a problem hiding this comment.
Немного "грязновато" написано, попробуй вынести вот эту логику среза в отдельную функцию.
There was a problem hiding this comment.
bitNumber должен вычисляться только если currentOperand?.length > 11, а сейчас вычисляется всегда, даже когда он может быть не нужен.
Поэтому я предложил сделать функцию, вынести за пределы компонента.
Можно назвать её shortenOperand или truncateOperand. Тогда вся запись будет логично читаться, сравни:
"если текущий операнд длиннее 11 - показать большое число, иначе - текущий операнд или 0"
"если текущий операнд длиннее 11 - укоротить операнд, иначе - текущий операнд или 0"
| box-shadow: 0 3px 2px rgba(0,0,0,0.2); | ||
| } | ||
|
|
||
| .numbers_0 { |
| draggable={draggable} | ||
| onDoubleClick={onDblClick} | ||
| > | ||
| {React.Children.map(children, (child) => { |
There was a problem hiding this comment.
А почему именно так сделал?
Почему просто {children} не отрендерить?
Есть какие-то общие props, которые хочешь через контейнер передавать сразу всех потомкам?
| import { connect } from 'react-redux'; | ||
|
|
||
| const Button = ({ constructorModeEnable, className, value, onClick }) => { | ||
| const clickHandler = () => { |
There was a problem hiding this comment.
Не стоит такую конкретику в такие общие компоненты прописывать.
Вот если бы компонент назывался CalculatorButton... :)
|
|
||
| const rootReducer = combineReducers({ | ||
| calc: calcReducer, | ||
| drag: constructorReducer, |
| }; | ||
| case DRAG_START: | ||
| if (state.draggableBlock === payload) { | ||
| return { ...state }; |
There was a problem hiding this comment.
можно просто state вернуть, зачем новый объект создаёшь?
| import { connect } from 'react-redux'; | ||
| import './Operations.css'; | ||
|
|
||
| const OPERATIONS = ['/', 'x', '-', '+']; |
There was a problem hiding this comment.
У тебя, вроде бы, между константами отступ в одну строку. Постоянство должно быть везде.
Обычно на проектах для этого используют линтеры, такие как eslint.
Попробуй в следующем проекте использовать линтер.
| return ( | ||
| <div className="display"> | ||
| <div className="display_text-field"> | ||
| {currentOperand?.length > 11 ? ( |
There was a problem hiding this comment.
bitNumber должен вычисляться только если currentOperand?.length > 11, а сейчас вычисляется всегда, даже когда он может быть не нужен.
Поэтому я предложил сделать функцию, вынести за пределы компонента.
Можно назвать её shortenOperand или truncateOperand. Тогда вся запись будет логично читаться, сравни:
"если текущий операнд длиннее 11 - показать большое число, иначе - текущий операнд или 0"
"если текущий операнд длиннее 11 - укоротить операнд, иначе - текущий операнд или 0"
| setDroppableSection(null); | ||
| }; | ||
|
|
||
| const renderElement = (element) => { |
There was a problem hiding this comment.
Эта логика повторяется и в компоненте CalcPalette. Стоит вынести в отдельную функцию/компонент.

No description provided.