Skip to content

Instantly share code, notes, and snippets.

@bannzai
Created March 9, 2025 04:41
Show Gist options
  • Save bannzai/25850f3cf09739fa26e77624fcef45de to your computer and use it in GitHub Desktop.
Save bannzai/25850f3cf09739fa26e77624fcef45de to your computer and use it in GitHub Desktop.
Observableの効果範囲を検証するViewファイル
//
// 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