เจกเจฌเจฒเจฏเฉเจกเจฌเจฒเจฏเฉเจกเฉเจธเฉ 2019 เจฆเฉ เจธเจเฉเจ เจเจซ เจฆ เจฏเฉเจจเฉเจ
เจจ เจธเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ, เจฎเฉเจ SwiftUI เจตเจฟเฉฑเจ เจกเฉเฉฐเจเฉ เจกเฉเจฌเจเฉ เจฒเฉเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพเฅค เจฎเฉเจ เจเจธเจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจฎเจพเจ เจฌเจฟเจคเจพเจเจ เจนเฉ เจ
เจคเฉ เจนเฉเจฃ เจเฉฑเจ เจ
เจธเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉ เจเฉ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฆเฉ เจเฉฑเจ เจตเจฟเจธเจผเจพเจฒ เจธเจผเฉเจฐเฉเจฃเฉ เจฒเจ เจเจชเจฏเฉเจเฉ เจนเฉ เจธเจเจฆเจพ เจนเฉ.
เจฎเฉเจ เจเจธเจจเฉเฉฐ เจฎเฉเจตเฉเจธเจตเจฟเจซเจเจฏเฉเจเจ เจเจฟเจนเจพ - เจเจน เจจเจตเฉเจเจ เจ
เจคเฉ เจชเฉเจฐเจพเจฃเฉเจเจ เจซเจฟเจฒเจฎเจพเจ เจฆเฉ เจเฉเจ เจเจฐเจจ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจธเฉฐเจเฉเจฐเจนเจฟ เจตเจฟเฉฑเจ เจเจเฉฑเจ เจพ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเจช เจนเฉ
เจ เจธเฉเจ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจนเจพเจ: "Habr" เจฆเฉ เจธเจพเจฐเฉ เจชเจพเจ เจเจพเจ เจฒเจ - "Habr" เจชเฉเจฐเจเจพเจฐ เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจฟเจธเฉ เจตเฉ เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจเฉเจฐเจธ เจตเจฟเฉฑเจ เจฆเจพเจเจฒเจพ เจฒเฉเจฃ เจตเฉเจฒเฉ 10 เจฐเฉเจฌเจฒ เจฆเฉ เจเฉเจเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ: เจตเจฟเจฆเจฟเจ เจ เจเจจเจฒเจพเจเจจ เจเฉเจฐเจธ
"เจชเฉเจฐเฉเจซเฉเจธเจผเจจ เจเจพเจตเจพ เจกเจฟเจตเฉเจฒเจชเจฐ" .
เจคเจพเจ MovieSwiftUI เจเฉ เจเจฐ เจธเจเจฆเจพ เจนเฉ?
- API เจจเจพเจฒ เจเฉฐเจเจฐเฉเจเจ เจเจฐเจฆเจพ เจนเฉ - เจฒเจเจญเจ เจเฉเจ เจตเฉ เจเจงเฉเจจเจฟเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจ เจเจฟเจนเจพ เจเจฐเจฆเฉ เจนเฉเฅค
- เจฌเฉเจจเจคเฉเจเจ 'เจคเฉ เจ
เจธเจฟเฉฐเจเฉเจฐเฉเจจเจธ เจกเฉเจเจพ เจฒเฉเจก เจเจฐเจฆเจพ เจนเฉ เจ
เจคเฉ JSON เจจเฉเฉฐ เจธเจตเจฟเจซเจ เจฎเจพเจกเจฒ เจตเจฟเฉฑเจ เจชเจพเจฐเจธ เจเจฐเจฆเจพ เจนเฉ
เจเฉเจกเฉเจฌเจฒ . - เจฌเฉเจจเจคเฉ 'เจคเฉ เจฒเฉเจก เจเฉเจคเฉเจเจ เจคเจธเจตเฉเจฐเจพเจ เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉเจธเจผ เจเจฐเจฆเจพ เจนเฉเฅค
- iOS, iPadOS, เจ เจคเฉ macOS เจฒเจ เจเจน เจเจช เจเจนเจจเจพเจ OS เจฆเฉ เจเจชเจญเฉเจเจคเจพเจตเจพเจ เจฒเจ เจธเจญ เจคเฉเจ เจตเจงเฉเจ UX เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค
- เจเจชเจญเฉเจเจคเจพ เจกเฉเจเจพ เจคเจฟเจเจฐ เจเจฐ เจธเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจชเจฃเฉ เจเฉเจฆ เจฆเฉ เจซเจฟเจฒเจฎ เจธเฉเจเฉ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉ. เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเจชเจญเฉเจเจคเจพ เจกเฉเจเจพ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจ เจคเฉ เจฐเฉเจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเฉเฅค
- เจตเจฟเจฏเฉเจเจผ, เจเฉฐเจชเฉเจจเฉเจเจ เจ เจคเฉ เจฎเจพเจกเจฒเจพเจ เจจเฉเฉฐ Redux เจชเฉเจเจฐเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจธเจชเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจตเฉฑเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค เจเฉฑเจฅเฉ เจกเฉเจเจพ เจฆเจพ เจชเฉเจฐเจตเจพเจน เจเฉฑเจ เจฆเจฟเจธเจผเจพเจนเฉเจฃ เจนเฉเฅค เจเจธ เจจเฉเฉฐ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจเฉเจธเจผ, เจฐเฉเจธเจเฉเจฐ เจ เจคเฉ เจเจตเจฐเจฐเจพเจเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
- เจเจชเจฒเฉเจเฉเจธเจผเจจ SwiftUI, TabbedView, SegmentedControl, NavigationView, Form, Modal, เจเจฆเจฟ เจฆเฉ เจฎเฉเจฒ เจญเจพเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเฅค เจเจน เจเจธเจเจฎ เจฆเฉเจฐเจฟเจธเจผ, เจธเฉฐเจเฉเจค, UI/UX เจตเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจตเจพเจธเจคเจต เจตเจฟเฉฑเจ, เจเจจเฉเจฎเฉเจธเจผเจจ เจจเจฟเจฐเจตเจฟเจเจจ เจนเฉ, GIF เจฅเฉเฉเจพ เจเจฟเจนเจพ เจเจเจเจพ เจนเฉเจเจ เจนเฉ
เจเจช 'เจคเฉ เจเฉฐเจฎ เจเจฐเจจ เจจเจพเจฒ เจฎเฉเจจเฉเฉฐ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจ เจจเฉเจญเจต เจฎเจฟเจฒเจฟเจ เจ เจคเฉ เจเฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจเฉ เจเจน เจธเจเจพเจฐเจพเจคเจฎเจ เจ เจจเฉเจญเจต เจธเฉเฅค เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจเจพเจฐเจเจธเจผเฉเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเจฟเจเจฃ เจฆเฉ เจฏเฉเจ เจธเฉ, เจธเจคเฉฐเจฌเจฐ เจตเจฟเฉฑเจ เจฎเฉเจ เจเจธเจจเฉเฉฐ เจธเฉเจงเจพเจฐเจพเจเจเจพ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจชเจธเจเฉเจฐ เจตเจฟเฉฑเจ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐเจพเจเจเจพ, เจจเจพเจฒ เจนเฉ iOS 13 เจฆเฉ เจฐเจฟเจฒเฉเจเจผ เจฆเฉ เจจเจพเจฒเฅค
Redux, BindableObject เจ เจคเฉ EnvironmentObject
เจฎเฉเจ เจนเฉเจฃ เจฒเจเจญเจ เจฆเฉ เจธเจพเจฒเจพเจ เจคเฉเจ Redux เจจเจพเจฒ เจเฉฐเจฎ เจเจฐ เจฐเจฟเจนเจพ เจนเจพเจ, เจเจธ เจฒเจ เจฎเฉเจ เจเจธ เจตเจฟเฉฑเจ เจฎเฉเจเจพเจฌเจฒเจคเจจ เจเฉฐเจเฉ เจคเจฐเฉเจนเจพเจ เจเจพเจฃเฉ เจนเจพเจเฅค เจเจพเจธ เจคเฉเจฐ 'เจคเฉ, เจฎเฉเจ เจเจธเจจเฉเฉฐ เจซเจฐเฉฐเจเจเจเจก เจตเจฟเฉฑเจ เจฒเจ เจตเจฐเจคเจฆเจพ เจนเจพเจ
เจฎเฉเจจเฉเฉฐ SwiftUI เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจฃ เจฒเจ เจกเจพเจเจพ เจซเจฒเฉ เจเจฐเจเฉเจเฉเจเจเจฐ เจตเจเฉเจ Redux เจจเฉเฉฐ เจเฉเจฃเจจ 'เจคเฉ เจเจฆเฉ เจชเจเจคเจพเจตเจพ เจจเจนเฉเจ เจนเฉเจเจ เจนเฉเฅค UIKit เจเจช เจตเจฟเฉฑเจ Redux เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ เจธเจญ เจคเฉเจ เจเฉเจฃเฉเจคเฉเจชเฉเจฐเจจ เจนเจฟเฉฑเจธเฉ เจธเจเฉเจฐ เจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจ เจคเฉ เจกเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ เจ เจคเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจคเฉเจนเจพเจกเฉ เจฆเฉเจฐเจฟเจธเจผเจพเจ/เจเฉฐเจชเฉเจจเฉเจเจเจธ เจตเจฟเฉฑเจ เจฎเฉเจช เจเจฐเจจเจพ เจนเฉเฅค เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, เจฎเฉเจจเฉเฉฐ เจเจจเฉเจเจเจฐเจพเจ เจฆเฉ เจเฉฑเจ เจเจฟเจธเจฎ เจฆเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฌเจฃเจพเจเจฃเฉ เจชเจ (ReSwift เจ เจคเฉ ReKotlin เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ)เฅค เจตเจงเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจเจพเจซเจผเฉ เจเฉเจก. เจฌเจฆเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, เจเจน (เจ เจเฉ เจคเฉฑเจ) เจเจชเจจ เจธเฉเจฐเจธ เจจเจนเฉเจ เจนเฉเฅค
เจเจผเฉเจธเจผ เจเจผเจฌเจฐเฉ! SwiftUI เจจเจพเจฒ เจเจฟเฉฐเจคเจพ เจเจฐเจจ เจตเจพเจฒเฉเจเจ เจเฉเจเจผเจพเจ - เจเฉเจเจฐ เจคเฉเจธเฉเจ Redux เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฏเฉเจเจจเจพ เจฌเจฃเจพเจเจเจฆเฉ เจนเฉ - เจธเจเฉเจฐ, เจธเจเฉเจเจธ เจ เจคเฉ เจฐเฉเจกเจฟเจเจธเจฐ เจนเจจเฅค @EnvironmentObject เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, SwiftUI เจฆเฉเจเจฐเจพ เจธเจเฉเจฐ เจจเจพเจฒ เจเฉฑเจฒเจฌเจพเจค เจฆเจพ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจงเจฟเจเจจ เจฐเฉฑเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจธ เจฒเจ, เจธเจเฉเจฐ เจเฉฑเจ BindableObject เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ.
เจฎเฉเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจธเจตเจฟเจซเจ เจชเฉเจเฉเจ เจฌเจฃเจพเจเจ เจนเฉ,
เจเจธ เจจเฉเฉฐ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ?
final public class Store<State: FluxState>: BindableObject {
public let willChange = PassthroughSubject<Void, Never>()
private(set) public var state: State
private func _dispatch(action: Action) {
willChange.send()
state = reducer(state, action)
}
}
เจนเจฐ เจตเจพเจฐ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเฉเจ เจเจพเจฐเจตเจพเจ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉ, เจคเฉเจธเฉเจ เจเฉเจ เจฐเจฌเจพเจเจธ เจจเฉเฉฐ เจธเจฐเจเจฐเจฎ เจเจฐเจฆเฉ เจนเฉเฅค เจเจน เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจฎเฉเจเฉเจฆเจพ เจธเจฅเจฟเจคเฉ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเจพเจฐเจตเจพเจเจเจ เจฆเจพ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเฉเจเจพเฅค เจเจน เจซเจฟเจฐ เจเจพเจฐเจตเจพเจ เจฆเฉ เจเจฟเจธเจฎ เจ เจคเฉ เจกเฉเจเจพ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเฉฑเจ เจจเจตเฉเจ เจธเฉเจงเฉ เจนเฉเจ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจตเจพเจชเจธ เจเจฐเฉเจเจพเฅค
เจเฉเจฐ, เจเจฟเจเจเจเจฟ เจธเจเฉเจฐ เจเฉฑเจ BindableObject เจนเฉ, เจเจน SwiftUI เจจเฉเฉฐ เจธเฉเจเจฟเจค เจเจฐเฉเจเจพ เจเจฆเฉเจ PassthroughSubject เจฆเฉเจเจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจเฉเจคเฉ willChange เจชเฉเจฐเจพเจชเจฐเจเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธเจฆเจพ เจฎเฉเฉฑเจฒ เจฌเจฆเจฒเจฆเจพ เจนเฉเฅค เจเจน เจเจธ เจฒเจ เจนเฉ เจเจฟเจเจเจเจฟ BindableObject เจจเฉเฉฐ เจเฉฑเจ PublisherType เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ, เจชเจฐ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจฒเจพเจเฉ เจเจฐเจจเจพ เจเจธเจฆเฉ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉเฅค เจเฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจเฉ, เจเจน เจเจชเจฒ เจฆเจพ เจเฉฑเจ เจฌเจนเฉเจค เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจธเฉฐเจฆ เจนเฉเฅค เจเจธ เจ เจจเฉเจธเจพเจฐ, เจ เจเจฒเฉ เจฐเฉเจเจกเจฐเจฟเฉฐเจ เจเฉฑเจเจฐ เจตเจฟเฉฑเจ, SwiftUI เจฐเจพเจ เจฆเฉ เจฌเจฆเจฒเจพเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจตเจฟเจเจพเจฐเจพเจ เจฆเฉ เจธเจฐเฉเจฐ เจจเฉเฉฐ เจฐเฉเจเจกเจฐ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเฉเจเจพเฅค
เจฆเจฐเจ เจธเจฒ, เจเจน SwiftUI เจฆเจพ เจธเจพเจฐเจพ เจฆเจฟเจฒ เจ เจคเฉ เจเจพเจฆเฉ เจนเฉเฅค เจนเฉเจฃ, เจเจฟเจธเฉ เจฐเจพเจ เจฆเฉ เจเจพเจนเจเฉ เจฒเฉเจฃ เจตเจพเจฒเฉ เจเจฟเจธเฉ เจตเฉ เจฆเฉเจฐเจฟเจธเจผ เจตเจฟเฉฑเจ, เจฆเฉเจฐเจฟเจธเจผ เจจเฉเฉฐ เจฐเจพเจ เจคเฉเจ เจชเฉเจฐเจพเจชเจค เจนเฉเจ เจกเฉเจเจพ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจฐเฉเจเจกเจฐ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจ เจคเฉ เจเฉ เจฌเจฆเจฒเจฟเจ เจนเฉเฅค
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
let controller = UIHostingController(rootView: HomeView().environmentObject(store))
window.rootViewController = controller
self.window = window
window.makeKeyAndVisible()
}
}
}
struct CustomListCoverRow : View {
@EnvironmentObject var store: Store<AppState>
let movieId: Int
var movie: Movie! {
return store.state.moviesState.movies[movieId]
}
var body: some View {
HStack(alignment: .center, spacing: 0) {
Image(movie.poster)
}.listRowInsets(EdgeInsets())
}
}
เจธเจเฉเจฐ เจจเฉเฉฐ เจเฉฑเจ EnvironmentObject เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฐเจเฉเจเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจเจฆเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ @EnvironmentObject เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจฟเจธเฉ เจตเฉ เจฆเฉเจฐเจฟเจธเจผ เจตเจฟเฉฑเจ เจชเจนเฉเฉฐเจเจฏเฉเจ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเฉเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจเฉเจฐเจฎเจพเจจเจพ เจจเจนเฉเจ เจนเฉ เจเจฟเจเจเจเจฟ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจเจฒเจฆเฉ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจ เจเจพเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจธเจฅเจฟเจคเฉ เจคเฉเจ เจเจฃเจจเจพ เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค
เจเจชเจฐเฉเจเจค เจเฉเจก เจเจฟเฉฑเจคเจฐ เจจเฉเฉฐ เจฌเจฆเจฒเจฆเจพ เจนเฉ เจเฉเจเจฐ เจซเจฟเจฒเจฎ เจฆเจพ เจชเฉเจธเจเจฐ เจฌเจฆเจฒเจฆเจพ เจนเฉเฅค
เจ
เจคเฉ เจเจน เจ
เจธเจฒ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซ เจเฉฑเจ เจฒเจพเจเจจ เจจเจพเจฒ เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจเจฟเจธ เจฆเฉ เจฎเจฆเจฆ เจจเจพเจฒ เจตเจฟเจเจพเจฐ เจฐเจพเจ เจจเจพเจฒ เจเฉเฉเฉ เจนเฉเจ เจนเจจ. เจเฉเจเจฐ เจคเฉเจธเฉเจ iOS 'เจคเฉ ReSwift เจจเจพเจฒ เจเฉฐเจฎ เจเฉเจคเจพ เจนเฉ เจเจพเจ เจซเจฟเจฐ เจตเฉ
เจนเฉเจฃ เจคเฉเจธเฉเจ เจเจพเจฐเจตเจพเจ เจจเฉเฉฐ เจธเจฐเจเจฐเจฎ เจเจฐเจจ เจ เจคเฉ เจจเจตเฉเจ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจเฉฑเจฅเฉ เจเฉฑเจ เจนเฉเจฐ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจเจฆเจพเจนเจฐเจจ เจนเฉ.
struct CustomListDetail : View {
@EnvironmentObject var store: Store<AppState>
let listId: Int
var list: CustomList {
store.state.moviesState.customLists[listId]!
}
var movies: [Int] {
list.movies.sortedMoviesIds(by: .byReleaseDate, state: store.state)
}
var body: some View {
List {
ForEach(movies) { movie in
NavigationLink(destination: MovieDetail(movieId: movie).environmentObject(self.store)) {
MovieRow(movieId: movie, displayListImage: false)
}
}.onDelete { (index) in
self.store.dispatch(action: MoviesActions.RemoveMovieFromCustomList(list: self.listId, movie: self.movies[index.first!]))
}
}
}
}
เจเจชเจฐเฉเจเจค เจเฉเจก เจตเจฟเฉฑเจ, เจฎเฉเจ เจนเจฐเฉเจ IP เจฒเจ SwiftUI เจคเฉเจ .onDelete เจเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจฐเจฟเจนเจพ/เจฐเจนเฉ เจนเจพเจเฅค เจเจน เจธเฉเจเฉ เจตเจฟเฉฑเจ เจเจคเจพเจฐ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจฒเจ เจธเจงเจพเจฐเจจ iOS เจธเจตเจพเจเจช เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเจธ เจฒเจ เจเจฆเฉเจ เจเจชเจญเฉเจเจคเจพ เจกเจฟเจฒเฉเจ เจฌเจเจจ เจจเฉเฉฐ เจเฉเจนเจฆเจพ เจนเฉ, เจคเจพเจ เจเจน เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเจเจธเจผเจจ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจซเจฟเจฒเจฎ เจจเฉเฉฐ เจธเฉเจเฉ เจตเจฟเฉฑเจเฉเจ เจนเจเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจเฉเจฐ, เจเจฟเจเจเจเจฟ เจธเฉเจเฉ เจธเฉฐเจชเฉฑเจคเฉ BindableObject เจฐเจพเจ เจคเฉเจ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉ เจเจ เจนเฉ เจ เจคเฉ เจเฉฑเจ EnvironmentObject เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฐเจเฉเจเจ เจเฉเจคเฉ เจเจ เจนเฉ, SwiftUI เจธเฉเจเฉ เจจเฉเฉฐ เจ เจชเจกเฉเจ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจเจเจเจฟ ForEach เจซเจฟเจฒเจฎเจพเจ เจฆเฉ เจเจฃเจจเจพ เจเฉเจคเฉ เจเจพเจเจฆเจพเจฆ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเจเจ เจนเฉเฅค
เจเฉฑเจฅเฉ เจฎเฉเจตเฉเจเจผเจธเจเฉเจ เจฐเฉเจกเจฟเจเจธเจฐ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉ:
func moviesStateReducer(state: MoviesState, action: Action) -> MoviesState {
var state = state
switch action {
// other actions.
case let action as MoviesActions.AddMovieToCustomList:
state.customLists[action.list]?.movies.append(action.movie)
case let action as MoviesActions.RemoveMovieFromCustomList:
state.customLists[action.list]?.movies.removeAll{ $0 == action.movie }
default:
break
}
return state
}
เจฐเฉเจกเจฟเจเจธเจฐ เจเจฆเฉเจ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฆเฉเจ เจคเฉเจธเฉเจ เจเฉเจ เจเจพเจฐเจตเจพเจ เจญเฉเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเฉฑเจ เจจเจตเฉเจ เจธเจฅเจฟเจคเฉ เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ เจเฉฑเจชเจฐ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจนเฉเฅค
เจฎเฉเจ เจ
เจเฉ เจตเฉเจฐเจตเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเจพเจตเจพเจเจเจพ - เจเจฟเจตเฉเจ SwiftUI เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเจพเจฃเจฆเจพ เจนเฉ เจเจฟ เจเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจเจพ เจนเฉ. เจเจธ เจจเฉเฉฐ เจนเฉเจฐ เจกเฉเฉฐเจเจพเจ เจจเจพเจฒ เจธเจฎเจเจฃ เจฒเจ, เจเจน เจเฉเจฎเจคเฉ เจนเฉ
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ:
- เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจฌเจพเจเจฒ เจกเจฟเจตเฉเจฒเจชเจฐ เจชเฉเจฐเฉ" .- เจเจจเจฒเจพเจเจจ เจเฉเจฐเจธ เจ เจชเจฒเจพเจ เจเฉเจคเจพ
"เจชเจพเจเจฅเจจ เจกเฉเจเจพ เจเจจเจพเจฒเจฟเจธเจ" .- เจฆเฉ เจธเจพเจฒเจพ เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจตเฉเฉฑเจฌ เจกเจฟเจตเฉเจฒเจชเจฐ เจนเจพเจ" .
เจธเจฐเฉเจค: www.habr.com