RxApollo 0.6.0

RxApollo 0.6.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released上次发布2017年12月
SwiftSwift 版本4.0
SPM支持 SPM

Scott Hoyt 维护。



 
依赖
Apollo~> 0.7.0
RxSwift~> 4.0
 

RxApollo 0.6.0

  • Scott Hoyt

RxApollo

RxSwiftApollo 扩展。

安装

Carthage

github "scottrhoyt/RxApollo"

手动

RxApollo.swift 添加到您的项目中。

使用方法

所有反应式扩展都封装在 ApolloClientrx 属性中。

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