Portable text
Global helper
This module defines a global <SanityContent>
component that can turn portable text into HTML. It is a lightweight functional component without an instance.
If you want to use the same serializers in multiple places, consider creating your own component (e.g.
<MySanityContent>
which wraps SanityContent, but with your default serializers. By creating ~/components/MySanityContent.vue
you should be able to use this everywhere in your app without importing it.Example
<template>
<SanityContent :blocks="content" />
</template>
Example with custom serializers
<template>
<SanityContent :blocks="content" :serializers="serializers" />
</template>
<script setup>
import CustomBlockComponent from '~/components/CustomBlockComponent.vue'
import { resolveComponent } from 'vue'
const serializers = {
types: {
// This is how to access a component registered by `@nuxt/components`
lazyRegisteredComponent: resolveComponent('LazyCustomSerializer'),
// A directly imported component
importedComponent: CustomBlockComponent,
// Example of a more complex async component
dynamicComponent: defineAsyncComponent({
loadingComponent: () => 'Loading...',
loader: () => import('~/other/component.vue'),
}),
},
marks: {
// You can also just pass a string for a custom serializer if it's an HTML element
internalLink: 'a'
}
}
</script>
Other resources
Table of Contents