Inject HTML content into an Astro component

Emmanuel Gautier / August 16, 2023

1 min read

The Challenge putting script tag content with Astro

While working on a project within the Astro framework, I encountered a scenario where I needed to fill HTML content within a <script> tag. However, the moment I implemented this, the smooth functioning of my web application turned into a jittery experience. It was clear that the <script> content was not playing well with the rest of the page.

<script type="application/ld+json">{JSON.stringify(schema)}</script>

But the render was not the one expected:

<script type="application/ld+json">{JSON.stringify(schema)}</script>

How to inject HTML into an Astro element

After some investigation, I discovered that Astro web framework has his own way to inject HTML string into an element, the directive set:html.

For the developer more familiar with the React ecosystem, it is similar to the React dangerouslySetInnerHTML

Here is the final solution after reading the documentation:

<script type="application/ld+json" set:html={JSON.stringify(schema)} />

Hope that can help other developers!

Consulting

If you're seeking solutions to a problem or need expert advice, I'm here to help! Don't hesitate to book a call with me for a consulting session. Let's discuss your situation and find the best solution together.

Share this post
Follow the RSS feed