# data flow

[SwiftUI](https://lochiwei.gitbook.io/ios/swiftui) ⟩ [Data Flow](https://lochiwei.gitbook.io/ios/swiftui/data-flow) ⟩&#x20;

{% tabs %}
{% tab title="🔴 主題" %}

* [state](https://lochiwei.gitbook.io/ios/swiftui/view/state/value/state "mention")
* [binding](https://lochiwei.gitbook.io/ios/swiftui/view/state/binding/binding "mention")
* [stateobject](https://lochiwei.gitbook.io/ios/swiftui/view/state/object/stateobject "mention")
* [Broken link](https://lochiwei.gitbook.io/ios/swiftui/broken-reference "mention")
* [observableobject](https://lochiwei.gitbook.io/ios/swiftui/view/state/observable-object/observableobject "mention")
* [preferences](https://lochiwei.gitbook.io/ios/swiftui/data-flow/preferences "mention")
* [environment](https://lochiwei.gitbook.io/ios/swiftui/view/environment/environment "mention")
  {% endtab %}

{% tab title="⭐️ 重點" %}

```swift
// value type    : ■ internal, □ external
// reference type: ● internal, ○ external

@State private var isOn = true                // ■
@Binding var isOn: Bool                       // □

@StateObject private var user = User()        // ●
@ObservedObject var user: User                // ○
@EnvironmentObject var modelData: ModelData   // ○
```

{% endtab %}

{% tab title="📗 參考" %}

* [ ] Sarun ⟩&#x20;
  * [ ] [What is @Environment in SwiftUI](https://sarunw.com/posts/what-is-environment-in-swiftui/) #todo
  * [ ] Data in SwiftUI ⟩ [Part 1](https://sarunw.com/posts/data-in-swiftui-1/), [Part 2](https://sarunw.com/posts/data-in-swiftui-2/), [Part 3](https://sarunw.com/posts/data-in-swiftui-3/)
* [ ] Hacking with Swift ⟩
  * [ ] [All SwiftUI property wrappers explained and compared](https://www.hackingwithswift.com/quick-start/swiftui/all-swiftui-property-wrappers-explained-and-compared)
  * [ ] [What is @StateObject?](https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-stateobject-property-wrapper), [@ObservedObject?](https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-observedobject-property-wrapper)
* [ ] matteomanferdini ⟩ [The Strategic SwiftUI Data Flow Guide](https://matteomanferdini.com/swiftui-data-flow/)  ⭐️
* [ ] Majid ⟩ [The difference between @StateObject, @EnvironmentObject, and @ObservedObject in SwiftUI](https://swiftwithmajid.com/2020/07/02/the-difference-between-stateobject-environmentobject-and-observedobject-in-swiftui/) #todo
* [ ] FIVE STAR ⟩ [Every SwiftUI Environment Value explained](https://www.fivestars.blog/articles/swiftui-environment-values/) #todo
* [ ] Sundell ⟩ [A guide to SwiftUI’s state management system](https://www.swiftbysundell.com/articles/swiftui-state-management-guide/)
* [ ] SwiftUI ⟩ [Lab Safely Updating The View State](https://swiftui-lab.com/state-changes/)
  {% endtab %}

{% tab title="📘 手冊" %}

* WWDC2019 ⟩ [Data Flow Through SwiftUI](https://developer.apple.com/videos/play/wwdc2019/226/)
  {% endtab %}

{% tab title="📙 書籍" %}

* [Working with Data in SwiftUI](https://www.bigmountainstudio.com/view/downloads/data) #todo
  {% endtab %}
  {% endtabs %}
