react-markdown
从 react-markdown 迁移时,内容可以继续使用原来的 Markdown。主要变化是输入属性、组件覆盖方式,以及语法插件的配置。
使用 Agent 协助
把下面的提示词交给能访问项目的 Agent:
替换组件
迁移前:
迁移后:
表格、任务列表、删除线和自动链接已经内置。这里显式开启了脚注、缩进代码块和 Setext 标题,以保留常见的文章语法。Fluxdown 默认把普通换行显示为换行;若原来依赖 CommonMark 的软换行表现,需要检查已有内容。
公式改用 build.tex 开关,不需要为默认 Full 组件再配置 remark-math 与 rehype-katex:
Next.js App Router 中,将 Fluxdown 放进文件顶部带有 'use client'; 的包装组件。数据获取仍可留在服务端页面;插件类和回调在客户端组件内定义,不通过服务端属性传递。
迁移自定义组件
components 中的链接、图片或代码块,分别对应 Link、Image、CodeBlock 等插槽。先安装扩展包:
例如,为链接添加类名,同时保留默认链接处理:
插槽属性不是原来的 components 属性,按 Slot 插件 的类型适配即可。已有的 urlTransform、元素过滤与路由跳转也要明确迁移,不能只替换标签名。
保留需要的扩展
- 额外语法与 AST 转换:分别使用 Remark 和 Rehype 插件包装现有 unified 扩展。
- 原始 HTML:Fluxdown 默认会解析允许的标签并清理输出,与 react-markdown 默认转义 HTML 的行为不同。检查原有
skipHtml或rehype-raw用法,按需调整标签与属性允许列表。 - 外观:默认组件自带样式,先用 theme 调整排版。原来针对
prose或react-markdown输出结构的 CSS 需要重新核对;必要时在应用入口引入fluxdown/styles.css。
若内容来自流式请求,继续阅读流式内容。确认旧插件没有其他使用方后,再移除 react-markdown 及不再需要的依赖。