일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- swift 동시성
- flutter
- generate parentheses dart
- swift concurrency
- lol api dart
- valorant api dart
- 롤 api dart
- 파이썬 부동소수점
- dart new
- Architectural overview
- 롤토체스 api dart
- docker overview
- flutter statefulwidget
- widget
- dart
- PlatformException(sign_in_failed
- flutter ios 폴더
- flutter android 폴더
- flutter bloc
- 발로란트 api dart
- AnimationController
- keychain error
- dart.dev
- dart new 키워드
- com.google.GIDSignIn
- flutter widget
- leetcode dart
- tft api dart
- riot api dart
- 파이썬
- Today
- Total
aspe
Managing data flow between views 본문
Source of truth
다수의 상태의 복사본을 관리하면 앱에 버그가 발생할 수 있는 불일치가 생길 수 있습니다. 데이터 불일치 버그를 방지하려면 앱의 각 데이터 요소에 대해 단일 소스를 사용해야합니다. 요소를 한 위치에 저장하면(source of truth), 임의의 수의 뷰가 동일한 데이터에 액세스할 수 있습니다.
코드 전체에 걸쳐 sources of truth 를 만들 수 있습니다. 각 sources of truth를 어떻게 그리고 어디서 정의하느냐는 데이터가 여러 뷰 사이에서 공유되는지, 데이터가 변경되는지에 따라 달라집니다.
Swift property wrappers
Swift에서 프로퍼티 래퍼는 공통 속성-초기화 패턴을 캡슐화하여 속성에 동작을 효율적으로 추가하는 데 도움이 됩니다. 스위프트 UI는 @State 및 @Binding 속성 래퍼를 사용하여 보기가 쉽게 액세스할 수 있는 source of truth를 유지하는 데 도움이 됩니다
State
프로퍼티를 @State로 선언하면 뷰 내에 진리 소스를 생성합니다. 시스템은 @State 속성의 값에 의존하는 보기의 모든 요소를 식별합니다.
사용자 상호 작용으로 인해 @State 속성이 변경될 수 있습니다. 시스템은 해당 속성에 종속되는 보기를 업데이트하여 새 버전의 사용자 인터페이스를 렌더링합니다.
@State 속성 값이 변경되면 시스템은 속성의 업데이트된 값을 사용하여 보기를 자동으로 다시 그립니다. 예를 들어 사용자가 Scrumdinger에서 ScrumsView를 수정하면 목록을 다시 그려 업데이트된 값을 표시합니다. 상태 속성은 버튼의 하이라이트 상태, 필터 설정 또는 현재 선택한 목록 항목과 같은 일시적인 상태를 관리하는 데 도움이 되므로 상태 속성을 비공개로 선언하고 영구 스토리지에서 사용하지 않도록 합니다.
@State 속성 래퍼는 뷰 구조에 로컬인 변형 가능한 source of truth를 정의하기 위한 스위프트 UI 문법입니다. 그러나 뷰 계층의 다른 뷰에서 동일한 source of truth를 사용하려면 어떻게 해야 할까요?
Binding
@Binding으로 래핑하는 속성은 @State 속성과 같은 기존 source of truth와 읽기 및 쓰기 액세스를 공유합니다. @Binding은 데이터를 직접 저장하지 않습니다. 대신 기존 source of truth와 해당 데이터를 표시하고 업데이트하는 뷰 사이에 양방향 연결을 만듭니다. 이 연결을 통해 데이터와 관련된 여러 뷰가 동기화됩니다.
시스템은 @State의 데이터와 @Binding을 포함하는 자식 뷰 사이에 종속성을 설정합니다. 부모 또는 자식 보기 중 하나는 source of truth로 정의한 속성을 읽거나 수정할 수 있습니다. 자식 뷰가 부모에 정의된 source of truth와 읽기 전용 관계를 갖는 경우, 값을 단순히 자식 뷰에 전달할 수 있습니다. 두 경우 모두 source of truth에 대한 변경 사항을 반영하도록 프레임워크가 두 뷰를 모두 자동으로 업데이트합니다.
App architecture
바인딩을 사용하여 단일 source of truth를 전파하는 이 패턴은 뷰 계층 구조 레벨의 수와 상관없이 효과적입니다.