website/versioned_docs/version-v19.0.0/api-reference/hooks/use-subscription.md
import DocsRating from '@site/src/core/DocsRating'; import {OssOnly, FbInternalOnly} from 'docusaurus-plugin-internaldocs-fb/internal'; import GraphQLSubscriptionConfig from '../types/GraphQLSubscriptionConfig.md';
useSubscriptionHook used to subscribe and unsubscribe to a subscription.
import {graphql, useSubscription} from 'react-relay';
import {useMemo} from 'react';
const subscription = graphql`
subscription UserDataSubscription($input: InputData!) {
# ...
}
`;
function UserComponent({ id }) {
// IMPORTANT: your config should be memoized.
// Otherwise, useSubscription will re-render too frequently.
const config = useMemo(() => ({
variables: {id},
subscription,
}), [id, subscription]);
useSubscription(config);
return (/* ... */);
}
config: a config of type GraphQLSubscriptionConfig passed to requestSubscriptionrequestSubscriptionFn: ?<TSubscriptionPayload>(IEnvironment, GraphQLSubscriptionConfig<TSubscriptionPayload>) => Disposable. An optional function with the same signature as requestSubscription, which will be called in its stead. Defaults to requestSubscription.requestSubscription API. It will:
requestSubscriptionFn changes.requestSubscription API directly.:::note
useSubscription doesn't automatically add client_subscription_id. You may need to provide an arbitrary client_subscription_id to config.variables.input
:::