内联组件
导入组件
/snippets/ 文件夹中。更多信息请参阅 可复用片段。
不支持嵌套导入。请将所有被引用的组件直接导入到父 MDX 文件中。
snippets/ 中创建一个组件文件:
/snippets/color-generator.jsx
注意事项
- SEO:搜索引擎可能无法完全索引由客户端渲染的动态内容。
- 首次加载:访客在组件渲染之前可能会看到闪烁。
- 可访问性:确保屏幕阅读器能够播报动态内容的变化。
- 优化依赖数组:仅在
useEffect中包含必要的依赖。 - 缓存昂贵操作:在适当之处使用
useMemo或useCallback。 - 减少重新渲染:将大型组件拆分为较小的组件。
- 懒加载:延迟渲染复杂组件,以缩短首次页面加载时间。由于 MDX 沙箱不支持
React.lazy和动态import(),请改为通过用户交互或可见性来控制重量级组件的加载。参见延迟渲染重量级组件。
延迟渲染重量级组件
React.lazy、Suspense 和动态 import()。为获得同样的效果,先渲染一个轻量级的占位符,仅在读者主动选择后再挂载开销较大的组件。这样可以保持首次页面加载的速度,同时仍然让读者能够与完整的组件交互。
下面的示例会让上一节中的 ColorGenerator 保持未挂载状态,直到读者点击 Load color generator:
useEffect 中设置的 IntersectionObserver。模式相同:在触发器触发之前保持 show 为 false,然后返回重量级组件。