diff --git a/recipes/expressive-react-maze/index.md b/recipes/expressive-react-maze/index.md index 3092c1eee0..f87dafa290 100644 --- a/recipes/expressive-react-maze/index.md +++ b/recipes/expressive-react-maze/index.md @@ -756,7 +756,9 @@ export const Maze = () => { Несмотря на то, что всё работает правильно, код компонента далёк от совершенства. Слишком много логики содержится в одном файле компонента. Создание подобных компонентов — это типичная ошибка при знакомстве с React. Проблема в том, что мы не нашли удобного способа разделить состояние между всеми компонентами и просто сложили всё в одну кучу (точнее, в один лабиринт). Даже когда кажется, что всё работает стабильно, стоит потратить немного времени на тестирование UX (user experience, пользовательское взаимодействие). Текущее решение содержит один неучтённый нюанс: после нажатия на кнопку «Апорт!» пользователь может добавить несколько стенок в лабиринте до того, как начнётся анимация. При этом у собачки появляются суперспособности проходить сквозь стены. Для устранения этой недокументированной возможности потребуется запретить обработку нажатий на кнопки добавления стен лабиринта как только была нажата кнопка «Апорт!» и до момента окончания анимации. Для этого можно добавить ещё одну переменную-состояние, чтобы знать, когда можно, а когда нельзя строить стены. + Другое возможное решение – переделать анимацию так, чтобы собачка учитывала актуальное состояние стен. Для этого, например, можно рассчитывать анимацию не сразу после нажатия кнопки, а постепенно, учитывая только следующую стенку. -Попробуйте реализовать это исправление самостоятельно. + +Попробуйте реализовать это исправление самостоятельно. В следующей статье разберёмся как разделить состояние между компонентами.