Skip to content

Commit 4a09631

Browse files
authored
Update navigation.md
fix Unterminated JSX contents
1 parent c532932 commit 4a09631

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

learning/android/navigation.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,11 @@ Scaffold(
452452
<img src="media/screens_structure.png" alt="структура компонентов экрана" width="400" height="400">
453453

454454
Требуются небольшие пояснения, в основном связанные с пакетом ui. В большинстве экранов содержится много элементов, внутренней логики, от анимаций до временных переменных для отображения контента или его значений от других данных. Для того чтобы разделить бизнес-логику и ui логику в рамках DefaultScreen происходит объявление переменных, которые представляют из себя state данных ViewModel, обработка событий нажатия, вызов диалогов, а то что отображать и как выделено для каждого экрана в composable компонент Content (в данном случае DefaultScreenContent), в котором находится собственно контент экрана. Header, который также помещен в UI - пример компонента экрана, который может быть сложным или его можно переиспользовать потом в рамках другого экрана, чтобы хранить его реализацию в рамках ScreenContent файла.
455-
Давайте попробуем подвести небольшой итог по тому, что было описано выше:
456-
- Целями предложенной организации навигации при использовании Jetpack Compose - упрощение и структуризация, разделение ответственности между компонентами, минимизация создания God классов, разобраться в которых спустя пару недель не сможет даже тот, кто его написал.
457-
- Данный подход требует привыкания, но как показывает наша практика происходит это в течение одного - двух реализованных разработчиком экранов.
458-
- Поддержка таких экранов, которые являются самостоятельными компонентами и всё участие в навигации с них и на них, находится в этих самых экранах - достаточно простая. В случае изменений параметров/добавлении новых/изменении типа аргумента фактически нам нужно изменить navArgs, функцию вызова экрана и поправить ошибки, там где нам скажет компилятор. Или при добавлении перехода на новый экран из существующего потребуется добавить действие перехода и объявить вызов NavController.
455+
456+
Давайте попробуем подвести небольшой итог по тому, что было описано выше.
457+
458+
Целями предложенной организации навигации при использовании Jetpack Compose - упрощение и структуризация, разделение ответственности между компонентами, минимизация создания God классов, разобраться в которых спустя пару недель не сможет даже тот, кто его написал.
459+
460+
Данный подход требует привыкания, но как показывает наша практика происходит это в течение одного - двух реализованных разработчиком экранов.
461+
462+
Поддержка таких экранов, которые являются самостоятельными компонентами и всё участие в навигации с них и на них, находится в этих самых экранах - достаточно простая. В случае изменений параметров/добавлении новых/изменении типа аргумента фактически нам нужно изменить navArgs, функцию вызова экрана и поправить ошибки, там где нам скажет компилятор. Или при добавлении перехода на новый экран из существующего потребуется добавить действие перехода и объявить вызов NavController.

0 commit comments

Comments
 (0)