You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中Head标签渲染Schema出现转义字符问题求助

解决Next.js中Head标签内Schema脚本转义问题

出现"这类转义字符,是因为Next.js默认会对插入到HTML中的字符串进行HTML实体转义,破坏了JSON格式结构。以下是针对不同路由模式的解决方案:

Pages Router 方案

使用next/head组件配合dangerouslySetInnerHTML直接插入原始JSON内容,避免转义:

正确的Schema组件代码

import Head from 'next/head';

export default function Schema({ schemaData }) {
  return (
    <Head>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }}
      />
    </Head>
  );
}

组件调用示例

<Schema 
  schemaData={{
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "你的文章标题",
    "description": "文章描述内容"
  }} 
/>

App Router 方案

可以使用next/script组件或直接在head标签内使用dangerouslySetInnerHTML:

示例代码

import Script from 'next/script';

export default function Page() {
  const schemaData = {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "App Router下的文章标题",
    "description": "App Router模式的示例描述"
  };

  return (
    <>
      <Script
        id="schema-markup"
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }}
      />
    </>
  );
}

关键说明

  • 不要直接将JSON字符串作为文本插入script标签,否则Next.js会自动转义双引号等特殊字符,导致JSON结构失效。
  • 使用JSON.stringify将JavaScript对象转换为合法的JSON字符串,再通过dangerouslySetInnerHTML插入,确保输出的JSON格式正确无转义。

内容的提问来源于stack exchange,提问作者S.M_Emamian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:43:18