Usage
The module injects a $datocms plugin into the nuxt context, containing the following methods:
query
- Arguments
- Options (type:
object)- @property
query(type:string, required) GraphQL query string - @property
variables(type:object, optional) GraphQL query variables - @property
preview(type:boolean, optional, default: whether Nuxt's preview mode is enabled) Whether to use Datocms's preview endpoint
- @property
- Options (type:
- Returns:
Promise<object>
Returns the graphql query response data.
Example
<script>
const query = `
query ($locale: SiteLocale!) {
home (locale: $locale) {
title
}
}
`;
export default {
asyncData ({ $datocms }) {
return $datocms.query({
query,
variables: {
locale: 'en',
},
preview: true
});
},
};
</script>
subscribe
- Arguments
- Options (type:
object)- @property
query(type:string, required) GraphQL query string - @property
variables(type:object, optional) GraphQL query variables - @property
enabled(type:boolean, default:app.context.$preview) by default, subscriptions are disabled outside Nuxt's preview mode - @property
preview(type:boolean, default:app.context.$preview) by default, preview is set to whether Nuxt's preview mode is enabled - @property
onUpdate(type:function, required) callback for new data for the subscription - @property
onStatusChange(type:function, optional) callback for status changes of the subscription - @property
onChannelError(type:function, optional) callback for errors on the subscription - @property
unsubscribeOnRouteChange(type:boolean, default:true) By default the subscription is ended on route change, which is advised for page data. Can be overwritten for layout data for instance.
- @property
- Options (type:
- Returns:
boolean<object>
Returns a function close the subscription.
Example
<script>
const query = `
query ($locale: SiteLocale!) {
home (locale: $locale) {
title
}
}
`;
export default {
mounted() {
// Default implementation only enabled in preview mode,
// so content managers can see their changes live.
// Will be unsubscribed automatically on route changes.
this.$datocms.subscribe({
query,
variables: {
locale: 'en',
},
onUpdate: (data) => {
this.home = data.home;
},
});
}
};
</script>