跳转到主要内容
直接在 MDX 文件中使用 React 组件hooks 在文档中构建交互式元素。

内联组件

直接在你的 MDX 文件中声明组件:

导入组件

组件文件必须位于 /snippets/ 文件夹中。更多信息请参阅 可复用片段
不支持嵌套导入。请将所有被引用的组件直接导入到父 MDX 文件中。
snippets/ 中创建一个组件文件:
/snippets/color-generator.jsx
然后导入并使用它:

注意事项

  • SEO:搜索引擎可能无法完全索引由客户端渲染的动态内容。
  • 首次加载:访客在组件渲染之前可能会看到闪烁。
  • 可访问性:确保屏幕阅读器能够播报动态内容的变化。
  • 优化依赖数组:仅在 useEffect 中包含必要的依赖。
  • 缓存昂贵操作:在适当之处使用 useMemouseCallback
  • 减少重新渲染:将大型组件拆分为较小的组件。
  • 懒加载:延迟渲染复杂组件,以缩短首次页面加载时间。由于 MDX 沙箱不支持 React.lazy 和动态 import(),请改为通过用户交互或可见性来控制重量级组件的加载。参见延迟渲染重量级组件

延迟渲染重量级组件

MDX 沙箱中无法使用 React.lazySuspense 和动态 import()。为获得同样的效果,先渲染一个轻量级的占位符,仅在读者主动选择后再挂载开销较大的组件。这样可以保持首次页面加载的速度,同时仍然让读者能够与完整的组件交互。 下面的示例会让上一节中的 ColorGenerator 保持未挂载状态,直到读者点击 Load color generator
如需在组件滚动到可见区域后再进行渲染,可将按钮替换为在 useEffect 中设置的 IntersectionObserver。模式相同:在触发器触发之前保持 showfalse,然后返回重量级组件。