The Relay Store
提供了一个用于向服务器发送 mutation 的API。
方法
附注:同样地,applyUpdate
和 commitUpdate
方法也会在由 Relay.Container传递到 components 的 this.props.relay
上被提供。它们能调节正在运行中的 Relay.Environment
的上下文中 mutations。
static commitUpdate(mutation: RelayMutation, callbacks: { onFailure?: (transaction: RelayMutationTransaction) => void; onSuccess?: (response: Object) => void; }): RelayMutationTransaction // Argument to `onFailure` callback type Transaction = { getError(): ?Error; }
commitUpdate
方法类似于在Flux中调度动作。 Relay 会按照如下来处理 mutation:
getCollisionKey
实现所指定的那样 - 这会被发送到服务器。 如果会冲产生冲突,它会排队直到冲突的 mutation 完成。
onSuccess
。onFailure
。var onSuccess = () => { console.log('Mutation successful!'); }; var onFailure = (transaction) => { var error = transaction.getError() || new Error('Mutation failed.'); console.error(error); }; var mutation = new MyMutation({...}); Relay.Store.commitUpdate(mutation, {onFailure, onSuccess});
static applyUpdate(mutation: RelayMutation, callbacks: { onFailure?: (transaction: RelayMutationTransaction) => void; onSuccess?: (response: Object) => void; }): RelayMutationTransaction
applyUpdate
就像 update
, 一样添加一个 mutation,不过并不提交它。它回传一个可以被提交或是回滚的 RelayMutationTransaction
。
当事务被提交并且从服务器接收到响应时,调用其中一个回调:
- 如果 mutation 成功,则回调 onSuccess
。
- 如果 mutation 失败,则回调 onFailure
。
var onSuccess = () => { console.log('Mutation successful!'); }; var onFailure = (transaction) => { var error = transaction.getError() || new Error('Mutation failed.'); console.error(error); }; var mutation = new MyMutation({...}); var transaction = Relay.Store.applyUpdate(mutation, {onFailure, onSuccess}); transaction.commit();