Subscription components update in real time in reaction to events on your GraphQL server. They are ideal for uses like chat rooms or stock tickers.
Subscription components inherit the ApolloElementInterface.
Properties
updateComplete
(read-only)Promise<boolean>
Methods
requestUpdate
Parameters
name
string
value
unknown
Returns
void
addController
Parameters
controller
ReactiveController
Returns
void
removeController
Parameters
controller
ReactiveController
Returns
void
Private Methods
update
protectedParameters
args
any[]
Returns
void
updated
protectedParameters
args
any[]
Returns
void
Properties
documentType
static(read-only)'document'|'query'|'mutation'|'subscription'
client
publicApolloClient | null
controller
publicApolloController<D, V>
document
publicComponentDocument<D, V> | null
graphql-tag
.data
publicData<D> | null
variables
publicVariables<D, V> | null
error
publicError | null
errors
publicreadonly GraphQLError[]
loading
publicboolean
fetchPolicy
publicstring | undefined
context
publicRecord<string, unknown> | undefined
errorPolicy
publicErrorPolicy | undefined
Much like fetchPolicy
, errorPolicy
allows you to control how GraphQL errors
from the server are sent to your UI code. By default, the error policy treats any
GraphQL Errors as network errors and ends the request chain.
It doesn’t save any data in the cache, and renders your UI with the error property
set to an ApolloError
. By changing this policy per request, you can adjust how
GraphQL Errors are managed by your UI. The possible options for errorPolicy
are:
none
(default): any errors from the request are treated like runtime errors and the observable is stopped (XXX this is default to lower breaking changes going from AC 1.0 => 2.0)ignore
: errors from the request do not stop the observable, but also don’t callnext
all
: errors are treated like data and will notify observables
readyToReceiveDocument
publicboolean
Events
apollo-element-connected
ApolloElementEvent
The element connected to the DOMapollo-element-disconnected
ApolloElementEvent
The element disconnected from the DOMPrivate Methods
documentChanged
protectedLifecycle callback that reacts to changes in the GraphQL documentParameters
document
ComponentDocument<D, V> | null
Returns
void
variablesChanged
protectedLifecycle callback that reacts to changes in the operation variablesParameters
variables
Variables<D, V> | null
Returns
void
Common interface for mutation elements
See ApolloElementInterface
for more information on events
Properties
documentType
static(read-only)'document'|'query'|'mutation'|'subscription'
controller
publicApolloController<D, V>
data
publicData<D> | null
variables
publicVariables<D, V> | null
awaitRefetchQueries
publicboolean | undefined
called
public(read-only)boolean
fetchPolicy
publicstring | undefined
ignoreResults
publicboolean
mutation
publicComponentDocument<D, V> | null
optimisticResponse
publicOptimisticResponseType<D, V> | undefined
An object that represents the result of this mutation that will be optimistically stored before the server has actually returned a result.
This is most often used for optimistic UI, where we want to be able to see the result of a mutation immediately, and update the UI later if any errors appear.
refetchQueries
publicRefetchQueriesType<D> | null
updateQueries
) for this,
you can refetch the queries that will be affected
and achieve a consistent store once these queries return.client
publicApolloClient | null
document
publicComponentDocument<D, V> | null
graphql-tag
.error
publicError | null
errors
publicreadonly GraphQLError[]
loading
publicboolean
context
publicRecord<string, unknown> | undefined
errorPolicy
publicErrorPolicy | undefined
Much like fetchPolicy
, errorPolicy
allows you to control how GraphQL errors
from the server are sent to your UI code. By default, the error policy treats any
GraphQL Errors as network errors and ends the request chain.
It doesn’t save any data in the cache, and renders your UI with the error property
set to an ApolloError
. By changing this policy per request, you can adjust how
GraphQL Errors are managed by your UI. The possible options for errorPolicy
are:
none
(default): any errors from the request are treated like runtime errors and the observable is stopped (XXX this is default to lower breaking changes going from AC 1.0 => 2.0)ignore
: errors from the request do not stop the observable, but also don’t callnext
all
: errors are treated like data and will notify observables
readyToReceiveDocument
publicboolean
Methods
onCompleted
publicCallback for when a mutation is completed.Parameters
_data
Data<D>
Returns
void
onError
publicCallback for when an error occurs in mutation.Parameters
_error
Error
Returns
void
updater
publicA function which updates the apollo cache when the query responds. This function will be called twice over the lifecycle of a mutation. Once at the very beginning if an optimisticResponse was provided. The writes created from the optimistic data will be rolled back before the second time this function is called which is when the mutation has succesfully resolved. At that point update will be called with the actual mutation result and those writes will not be rolled back.
The reason a DataProxy is provided instead of the user calling the methods directly on ApolloClient is that all of the writes are batched together at the end of the update, and it allows for writes generated by optimistic data to be rolled back.
Examples
updater(cache, result) {
cache.writeQuery({
query: MyProfileQuery,
data: { profile: result.data.updateMyProfile },
});
}
Parameters
params
any[]
Returns
any
mutate
publicThis resolves a single mutation according to the options specified and returns a Promise which is either resolved with the resulting data or rejected with an error.Parameters
params
Partial<MutationOptions<Data<D>, Variables<D, V>>>
All named arguments to mutate default to the element’s corresponding instance property. So you can call element.mutate()
without arguments and it will call using element.mutation
, element.variables
, etc. You can likewise override instance properties per-call by passing them in, e.g.
await element.mutate({
fetchPolicy: 'network-only'
variables: {
...element.variables,
name: 'overridden',
},
});
Property | Type | Description |
---|---|---|
awaitRefetchQueries | boolean |
See awaitRefetchQueries |
context | Record<string, unknown> |
See context |
errorPolicy | ErrorPolicy |
See errorPolicy |
fetchPolicy | FetchPolicy |
See fetchPolicy |
mutation | DocumentNode |
See mutation |
optimisticResponse | OptimisticResponseType<D, V> |
See optimisticResponse |
refetchQueries | RefetchQueriesType<D, V> |
See refetchQueries |
update | MutationUpdaterFn<Data<D>, Variables<D, V>> |
See updater |
variables | Variables<D, V> |
See variables |
Returns
Promise<FetchResult<Data<D>>>
Property | Type | Description |
---|---|---|
data | Data<D, V> |
The result of a successful execution of the mutation |
errors | readonly GraphQLError[] |
included when any errors occurred as a non-empty array |
extensions | boolean |
Reserved for adding non-standard properties |
context | Record<string, unknown> |
See context |
Events
apollo-mutation-result
CustomEvent<FetchResult<Data<D>>>
The mutation resolvedapollo-error
CustomEvent<ApolloError>
The mutation rejectedapollo-element-connected
ApolloElementEvent
The element connected to the DOMapollo-element-disconnected
ApolloElementEvent
The element disconnected from the DOMPrivate Methods
documentChanged
protectedLifecycle callback that reacts to changes in the GraphQL documentParameters
document
ComponentDocument<D, V> | null
Returns
void
variablesChanged
protectedLifecycle callback that reacts to changes in the operation variablesParameters
variables
Variables<D, V> | null
Returns
void
Common interface for query elements
See ApolloElementInterface
for more information on events
Properties
documentType
static(read-only)'document'|'query'|'mutation'|'subscription'
controller
publicApolloController<D, V>
data
publicData<D> | null
variables
publicVariables<D, V> | null
An object map from variable name to variable value, where the variables are used within the GraphQL query.
Setting variables will initiate the query, unless noAutoSubscribe
is also set.
fetchPolicy
publicstring | undefined
Determines where the client may return a result from. The options are:
cache-first
(default): return result from cache, fetch from network if cached result is not available.cache-and-network
: return result from cache first (if it exists), then return network result once it’s available.cache-only
: return result from cache if available, fail otherwise.no-cache
: return result from network, fail if network call doesn’t succeed, don’t save to cachenetwork-only
: return result from network, fail if network call doesn’t succeed, save to cachestandby
: only for queries that aren’t actively watched, but should be available for refetch and updateQueries.
canAutoSubscribe
public(read-only)boolean
options
publicApolloQueryControllerOptions<D, V>
Option | Type | Description |
---|---|---|
fetchPolicy | WatchQueryFetchPolicy |
The fetchPolicy for the query. |
variables | Variables<D, V> |
Variables for the query. |
noAutoSubscribe | boolean |
If true, the element will not begin querying data until you manually call subscribe |
shouldSubscribe | (op?: Partial<Operation<D, V>>) => boolean |
Determines whether the element should attempt to subscribe automatically\nOverride to prevent subscribing unless your conditions are met |
onData | (data: Data<D>) => void |
Optional callback for when a query resolves. |
onError | (error: Error) => void |
Optional callback for when an error occurs. |
Inherits from ApolloControllerOptions
networkStatus
publicNetworkStatus
networkStatus
is useful if you want to display a different loading indicator (or no indicator at all)
depending on your network status as it provides a more detailed view into the state of a network request
on your component than loading
does. networkStatus
is an enum with different number values between 1 and 8.
These number values each represent a different network state.
loading
: The query has never been run before and the request is now pending. A query will still have this network status even if a result was returned from the cache, but a query was dispatched anyway.setVariables
: If a query’s variables change and a network request was fired then the network status will be setVariables until the result of that query comes back. React users will see this when options.variables changes on their queries.fetchMore
: Indicates that fetchMore was called on this query and that the network request created is currently in flight.refetch
: It means that refetch was called on a query and the refetch request is currently in flight.- Unused.
poll
: Indicates that a polling query is currently in flight. So for example if you are polling a query every 10 seconds then the network status will switch to poll every 10 seconds whenever a poll request has been sent but not resolved.ready
: No request is in flight for this query, and no errors happened. Everything is OK.error
: No request is in flight for this query, but one or more errors were detected.
If the network status is less then 7 then it is equivalent to loading
being true. In fact you could
replace all of your loading
checks with networkStatus < 7
and you would not see a difference.
It is recommended that you use loading
, however.
nextFetchPolicy
publicWatchQueryFetchPolicy | NextFetchPolicyFunction<D, V> | undefined
cache-and-network
or network-only
.When someone chooses cache-and-network or network-only as their
initial FetchPolicy, they often do not want future cache updates to
trigger unconditional network requests, which is what repeatedly
applying the cache-and-network or network-only policies would seem
to imply. Instead, when the cache reports an update after the
initial network request, it may be desirable for subsequent network
requests to be triggered only if the cache result is incomplete.
The nextFetchPolicy option provides a way to update
options.fetchPolicy after the intial network request, without
having to set options.noAutoSubscribe
publicboolean
subscribe()
method to do so.partial
public(read-only)boolean | undefined
pollInterval
publicnumber | undefined
query
publicDocumentNode | ComponentDocument<D, V> | null
client
publicApolloClient | null
document
publicComponentDocument<D, V> | null
graphql-tag
.error
publicError | null
errors
publicreadonly GraphQLError[]
loading
publicboolean
context
publicRecord<string, unknown> | undefined
errorPolicy
publicErrorPolicy | undefined
Much like fetchPolicy
, errorPolicy
allows you to control how GraphQL errors
from the server are sent to your UI code. By default, the error policy treats any
GraphQL Errors as network errors and ends the request chain.
It doesn’t save any data in the cache, and renders your UI with the error property
set to an ApolloError
. By changing this policy per request, you can adjust how
GraphQL Errors are managed by your UI. The possible options for errorPolicy
are:
none
(default): any errors from the request are treated like runtime errors and the observable is stopped (XXX this is default to lower breaking changes going from AC 1.0 => 2.0)ignore
: errors from the request do not stop the observable, but also don’t callnext
all
: errors are treated like data and will notify observables
readyToReceiveDocument
publicboolean
Methods
onData
publicOptional callback for when a query is completed.Parameters
data
Data<D>
Returns
void
onError
publicOptional callback for when an error occurs.Parameters
error
Error
Returns
void
refetch
publicUpdate the variables of this observable query, and fetch the new results.Parameters
variables
Variables<D, V>
Returns
Promise<ApolloQueryResult<Data<D>>>
Property | Type | Description |
---|---|---|
data | Data<D> |
If the query resolved, the data. |
error | ApolloError |
If the query rejected, the error. |
errors | readonly GraphQLError[] |
If the query returned partials results, and some were errors, the list of errors. |
loading | boolean |
Whether the operation is in-flight. |
partial | boolean |
Whether the query returned partial data. |
networkStatus | NetworkStatus |
See NetworkStatus. |
shouldSubscribe
publicDetermines whether the element should attempt to subscribe i.e. begin querying Override to prevent subscribing unless your conditions are metParameters
options
Partial<SubscriptionOptions<Variables<D, V>, Data<D>>>
Property | Type | Description |
---|---|---|
query | DocumentNode |
See query |
variables | Variables<D, V> |
See variables |
fetchPolicy | FetchPolicy |
See fetchPolicy |
errorPolicy | ErrorPolicy |
See errorPolicy |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
Returns
boolean
subscribe
publicResets the internal state of the query and subscribes.Parameters
params
Partial<SubscriptionOptions<Variables<D, V>, Data<D>>>
Property | Type | Description |
---|---|---|
query | DocumentNode |
See query |
variables | Variables<D, V> |
See variables |
fetchPolicy | FetchPolicy |
See fetchPolicy |
errorPolicy | ErrorPolicy |
See errorPolicy |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
Returns
Subscription
subscribeToMore
publicLets you pass a GraphQL subscription and updateQuery function to subscribe to more updates for your query.
The updateQuery
parameter is a function that takes the previous query data,
then a { subscriptionData: TSubscriptionResult }
object,
and returns an object with updated query data based on the new results.
Parameters
options
SubscribeToMoreOptions<Data<D>, TSubscriptionVariables, TSubscriptionData>
Returns
void | (() => void)
executeQuery
publicExecutes a Query once and updates the component with the resultParameters
params
Partial<QueryOptions<Variables<D, V>, Data<D>>> | undefined
Option | Type | Description |
---|---|---|
query | DocumentNode |
A GraphQL document that consists of a single query to be sent down to the server. |
variables | Variables<D, V> |
A map going from variable name to variable value, where the variables are used within the GraphQL query. |
fetchPolicy | FetchPolicy |
Specifies the fetchPolicy to be used for this query. |
errorPolicy | ErrorPolicy |
Specifies the ErrorPolicy to be used for this query. |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
Returns
Promise<ApolloQueryResult<Data<D>>>
Property | Type | Description |
---|---|---|
data | Data<D> |
If the query resolved, the data. |
error | ApolloError |
If the query rejected, the error. |
errors | readonly GraphQLError[] |
If the query returned partials results, and some were errors, the list of errors. |
loading | boolean |
Whether the operation is in-flight. |
partial | boolean |
Whether the query returned partial data. |
networkStatus | NetworkStatus |
See NetworkStatus. |
fetchMore
publicExposes the ObservableQuery#fetchMore
method.
https://www.apollographql.com/docs/react/api/core/ObservableQuery/#ObservableQuery.fetchMore
The optional updateQuery
parameter is a function that takes the previous query data,
then a { subscriptionData: TSubscriptionResult }
object,
and returns an object with updated query data based on the new results.
The optional variables
parameter is an optional new variables object.
Parameters
params
Partial<FetchMoreParams<D, V>> | undefined
Option | Type | Description |
---|---|---|
query | DocumentNode |
Query to fetch, defaults to this.query |
updateQuery | Function |
Function to determine how to update the cache when the query resolves. (deprecated - use field policies instead) |
variables | Variables<D, V> |
Query variables |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
Returns
Promise<ApolloQueryResult<D>>
Property | Type | Description |
---|---|---|
data | Data<D> |
If the query resolved, the data. |
error | ApolloError |
If the query rejected, the error. |
errors | readonly GraphQLError[] |
If the query returned partials results, and some were errors, the list of errors. |
loading | boolean |
Whether the operation is in-flight. |
partial | boolean |
Whether the query returned partial data. |
networkStatus | NetworkStatus |
See NetworkStatus. |
Events
apollo-query-result
CustomEvent<ApolloQueryResult<Data<D>>>
The query resolvedapollo-error
CustomEvent<ApolloError>
The query rejectedapollo-element-connected
ApolloElementEvent
The element connected to the DOMapollo-element-disconnected
ApolloElementEvent
The element disconnected from the DOMPrivate Methods
documentChanged
protectedLifecycle callback that reacts to changes in the GraphQL documentParameters
document
ComponentDocument<D, V> | null
Returns
void
variablesChanged
protectedLifecycle callback that reacts to changes in the operation variablesParameters
variables
Variables<D, V> | null
Returns
void
Common interface for subscription elements
See ApolloElementInterface
for more information on events
Properties
documentType
static(read-only)'document'|'query'|'mutation'|'subscription'
controller
publicApolloController<D, V>
data
publicData<D> | null
variables
publicVariables<D, V> | null
An object map from variable name to variable value, where the variables are used within the GraphQL subscription.
Setting variables will initiate the subscription, unless noAutoSubscribe
is also set.
subscription
publicComponentDocument<D, V> | null
canAutoSubscribe
public(read-only)boolean
fetchPolicy
publicstring | undefined
pollInterval
publicnumber | undefined
noAutoSubscribe
publicboolean
subscribe
shouldResubscribe
publicboolean | ((options: SubscriptionDataOptions<Data<D>, Variables<D, V>>) => boolean)
skip
publicboolean
client
publicApolloClient | null
document
publicComponentDocument<D, V> | null
graphql-tag
.error
publicError | null
errors
publicreadonly GraphQLError[]
loading
publicboolean
context
publicRecord<string, unknown> | undefined
errorPolicy
publicErrorPolicy | undefined
Much like fetchPolicy
, errorPolicy
allows you to control how GraphQL errors
from the server are sent to your UI code. By default, the error policy treats any
GraphQL Errors as network errors and ends the request chain.
It doesn’t save any data in the cache, and renders your UI with the error property
set to an ApolloError
. By changing this policy per request, you can adjust how
GraphQL Errors are managed by your UI. The possible options for errorPolicy
are:
none
(default): any errors from the request are treated like runtime errors and the observable is stopped (XXX this is default to lower breaking changes going from AC 1.0 => 2.0)ignore
: errors from the request do not stop the observable, but also don’t callnext
all
: errors are treated like data and will notify observables
readyToReceiveDocument
publicboolean
Methods
onSubscriptionData
publicCallback for when data is updatedParameters
_result
OnSubscriptionDataParams<Data<D>>
Returns
void
onSubscriptionComplete
publicCallback for when subscription completes.Returns
void
onError
publicCallback for when error is updatedParameters
error
Error
Returns
void
subscribe
publicResets the subscription and subscribes.Parameters
params
Partial<SubscriptionDataOptions<D, V>>
Option | Type | Description |
---|---|---|
client | ApolloClient |
Apollo Client to use for the subscription. |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
errorPolicy | ErrorPolicy |
Error policy to use for the subscription. See errorPolicy |
fetchPolicy | FetchPolicy |
See fetchPolicy |
shouldResubscribe | boolean |
Boolean, or a predicate function of SubscriptionDataOptions that determines if your subscription should be unsubscribed and subscribed again |
skip | boolean |
If skip is true, the subscription will be skipped entirely. |
subscription | DocumentNode |
GraphQL document with a single subscription. |
variables | Variables<D, V> |
An object containing all of the variables your subscription needs to execute. |
Returns
void
cancel
publicCancels and clears the subscriptionReturns
void
shouldSubscribe
publicDetermines whether the element should attempt to subscribe automatically Override to prevent subscribing unless your conditions are metParameters
options
Partial<SubscriptionOptions<Variables<D, V>, Data<D>>>
Property | Type | Description |
---|---|---|
query | DocumentNode |
See query |
variables | Variables<D, V> |
See variables |
fetchPolicy | FetchPolicy |
See fetchPolicy |
errorPolicy | ErrorPolicy |
See errorPolicy |
context | Record<string, unknown> |
Context object passed through the link execution chain. |
Returns
boolean
Events
apollo-subscription-result
ApolloSubscriptionResultEvent
The subscription updatedapollo-error
CustomEvent<ApolloError>
The subscription produced an errorapollo-element-connected
ApolloElementEvent
The element connected to the DOMapollo-element-disconnected
ApolloElementEvent
The element disconnected from the DOMPrivate Methods
documentChanged
protectedLifecycle callback that reacts to changes in the GraphQL documentParameters
document
ComponentDocument<D, V> | null
Returns
void
variablesChanged
protectedLifecycle callback that reacts to changes in the operation variablesParameters
variables
Variables<D, V> | null
Returns
void
Exports
js CustomElement
from types.js
js ControllerHost
from types.js
js ApolloElementElement
from types.js
js ApolloMutationElement
from types.js
js ApolloQueryElement
from types.js
js ApolloSubscriptionElement
from types.js
js GraphQLError
from types.js