Created
March 9, 2025 04:41
-
-
Save bannzai/25850f3cf09739fa26e77624fcef45de to your computer and use it in GitHub Desktop.
Observableの効果範囲を検証するViewファイル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ContentView.swift | |
// StateObservable | |
// | |
// Created by bannzai on 2025/03/09. | |
// | |
import SwiftUI | |
@Observable | |
final class Observed { | |
var text = "Hello, world!" | |
} | |
struct ContentView: View { | |
let observed = Observed() | |
var body: some View { | |
VStack { | |
Text("ContentView:----") | |
Button { | |
observed.text = "Hello, ContentView!" | |
} label: { | |
Text(observed.text) | |
} | |
Text("VarObservable:----") | |
VarObservable() | |
Text("StateObservable:----") | |
StateObservable() | |
Text("EnvironmentObservable:----") | |
EnvironmentObservable() | |
.environment(observed) | |
} | |
.buttonStyle(.borderedProminent) | |
} | |
} | |
struct VarObservable: View { | |
let observed = Observed() | |
var body: some View { | |
Button { | |
observed.text = "Hello, VarObservable!" | |
} label: { | |
Text(observed.text) | |
} | |
} | |
} | |
struct StateObservable: View { | |
@State var observed = Observed() | |
var body: some View { | |
Button { | |
observed.text = "Hello, StateObservable!" | |
} label: { | |
Text(observed.text) | |
} | |
} | |
} | |
struct EnvironmentObservable: View { | |
@Environment(Observed.self) var observed: Observed | |
var body: some View { | |
Button { | |
observed.text = "Hello, EnvironmentObservable!" | |
} label: { | |
Text(observed.text) | |
} | |
} | |
} | |
#Preview { | |
ContentView() | |
.frame(width: 400, height: 1000) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment