测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | MIT |
Released上次发布 | 2017年12月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Scott Hoyt 维护。
依赖 | |
Apollo | ~> 0.7.0 |
RxSwift | ~> 4.0 |
github "scottrhoyt/RxApollo"
将 RxApollo.swift
添加到您的项目中。
所有反应式扩展都封装在 ApolloClient
的 rx
属性中。
import Apollo
import RxSwift
import RxApollo
let apollo: ApolloClient
let disposeBag = DisposeBag()
获取工作方式与预期相同
// Let's get our hero's name and print it or the error if there is one.
apollo.rx.fetch(query: HeroNameQuery())
.map { $0.hero?.name }
.subscribe(onNext: { heroName in
print("Our hero's name is \(heroName).")
}, onError: { error in
print("Received error: \(error).")
})
.disposed(by: disposeBag)
// Let's watch to see if our hero's name changes and print it or the error if there is one.
apollo.rx.watch(query: HeroNameQuery())
.map { $0.hero?.name }
.subscribe(onNext: { heroName in
print("Our hero's name is \(heroName).")
}, onError: { error in
print("Received error: \(error).")
})
.disposed(by: disposeBag)
监视也与使用 RxCocoa
绑定工作得相当好
import RxCocoa
let heroField: UITextField
// Let's watch to see if our hero's name changes and set a text field.
apollo.rx.watch(query: HeroNameQuery())
.map { $0.hero?.name }
.asDriver(onErrorJustReturn: nil)
.drive(heroField.rx.text)
.disposed(by: disposeBag)
变异也遵循相同的模式
// Let's upvote a post.
apollo.rx.perform(mutation: UpvotePostMutation(postId: postId))
.subscribe()
.disposed(by: disposeBag)
MIT