Relay 的 Store
提供一個 API 來把 mutation 發送到伺服器。
方法
附註:同樣地,applyUpdate
和 commitUpdate
方法也會
被提供在藉由 Relay.Container
傳遞到 components 的
this.props.relay
prop 上。它們能在當下運作中的 Relay.Environment
的 context 中 dispatch mutations。
static commitUpdate(mutation: RelayMutation, callbacks: { onFailure?: (transaction: RelayMutationTransaction) => void; onSuccess?: (response: Object) => void; }): RelayMutationTransaction // 傳給 `onFailure` callback 的參數 type Transaction = { getError(): ?Error; }
commitUpdate
方法類似於在 Flux 中 dispatch 一個 action。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,不過並不 commit 它。它回傳一個可以被 commit 或是 rollback 的 RelayMutationTransaction
。
當這個 transaction 被 commit 並從伺服器收到回應時,其中一個 callback 會被呼叫:
- 如果這個 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();