Relay.Store
The Relay Store provides an API for dispatching mutations to the server.
Overview
Methods
-
static commitUpdate(mutation, callbacks)
Initiate processing of a mutation. -
static applyUpdate(mutation, callbacks)
Adds a MutationTransaction to the queue without committing it.
Note: Equivalent applyUpdate and commitUpdate methods are also
provided on the this.props.relay prop that is passed to components by
Relay.Container. These dispatch mutations in the context of the currently
active Relay.Environment.
Methods
commitUpdate (static method)
static commitUpdate(mutation: RelayMutation, callbacks: {
onFailure?: (transaction: RelayMutationTransaction) => void;
onSuccess?: (response: Object) => void;
}): RelayMutationTransaction
// Argument to `onFailure` callback
type Transaction = {
getError(): ?Error;
}
The commitUpdate method is analogous to dispatching an action in Flux. Relay processes
the mutation as follows:
- If the mutation defines an optimistic payload - a set of data to apply locally while waiting for the server response - Relay applies this change and updates any affected React components (note that optimistic updates do not overwrite known server data in the cache).
- If the mutation would not 'collide' (overlap) with other pending mutations - as specified by its
getCollisionKeyimplementation - it is sent to the server. If it would conflict, it is enqueued until conflicting mutations have completed. - When the server response is received, one of the callbacks is invoked:
onSuccessis called if the mutation succeeded.onFailureis called if the mutation failed.
Example
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});
applyUpdate (static method)
static applyUpdate(mutation: RelayMutation, callbacks: {
onFailure?: (transaction: RelayMutationTransaction) => void;
onSuccess?: (response: Object) => void;
}): RelayMutationTransaction
The applyUpdate adds a mutation just like update, but does not commit it. It returns a RelayMutationTransaction that can be committed or rollbacked.
When the transaction is committed and the response is received from the server, one of the callbacks is invoked:
onSuccessis called if the mutation succeeded.onFailureis called if the mutation failed.
Example
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();