Skip to content

homework-3#3

Open
W0x3R wants to merge 72 commits into
mainfrom
homework-3
Open

homework-3#3
W0x3R wants to merge 72 commits into
mainfrom
homework-3

Conversation

@W0x3R
Copy link
Copy Markdown
Owner

@W0x3R W0x3R commented Aug 13, 2025

1) Реализован функционал отображения модального окна с использованием паттерна Compound Components.

2) Создан HOC withLoading для расширения компонента PostList.

3) Реализован функционал для отображения и сворачивания/разворачивания комментариев.

4) Реализован функционал для фильтрации постов по длине заголовка.

5) Использованы оптимизации useMemo и useCallback в PostList.

W0x3R added 30 commits August 4, 2025 22:34
…locks with wrapper class (Tue, Aug 5, 2025, 5:15:33 PM)
… with a description of the project. the functionality of opening/closing the modal window has been implemented
…ader have been added. (Fri, Aug 8, 2025, 4:46:46 PM)
…been created. (Fri, Aug 8, 2025, 4:50:12 PM)
W0x3R added 26 commits August 11, 2025 21:21
@@ -0,0 +1,20 @@
import styles from "./PostLengthFilter.module.css"

export const PostLengthFilter = ({ value, onFilterChange }) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useCallback для onFilterChange сам по себе не даёт эффекта: при каждом обновлении родителя произойдёт повторный рендер. Имеет смысл обернуть компонент в React.memo и убрать value из пропсов. Текущая оптимизация не срабатывает, потому что в родителе обновляется value, и это инициирует ререндер дочерних компонентов. Нет смысла делать этот инпут контролируемым, если мы берём значение из события и храним состояние локально.

<input
id="post-length"
className={styles.input}
onChange={(e) => onFilterChange(e)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вообще передавать весь объект event не очень хорошо: родителю нужен только value.

Comment thread src/shared/ui/Button/Button.tsx Outdated
@@ -0,0 +1,9 @@
import styles from "./Button.module.css"

export const Button = ({ onClick, children, className }) => {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так же нужен memo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants