28 lines
566 B
Swift
28 lines
566 B
Swift
|
import SwiftUI
|
||
|
|
||
|
// MARK: - On load
|
||
|
extension View {
|
||
|
func onLoad(_ action: @escaping () -> Void) -> some View {
|
||
|
modifier(ViewDidLoadModifier(action))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private struct ViewDidLoadModifier: ViewModifier {
|
||
|
private let action: () -> Void
|
||
|
|
||
|
@State private var didLoad = false
|
||
|
|
||
|
init(_ action: @escaping () -> Void) {
|
||
|
self.action = action
|
||
|
}
|
||
|
|
||
|
func body(content: Content) -> some View {
|
||
|
content.onAppear {
|
||
|
if !didLoad {
|
||
|
didLoad.toggle()
|
||
|
action()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|