For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt, and this page is available as Markdown at /zh/apis/app/runtime/ssr/no-ssr.md.
  • 简体中文
  • NoSSR

    被 NoSSR 包裹的内容在服务端不会进行渲染,在客户端 hydrate 阶段也不会渲染,等到整个 App 渲染完成后便会立即渲染。

    使用姿势

    import { NoSSR } from '@modern-js/runtime/ssr';
    
    export default () => <NoSSR>...</NoSSR>;

    示例

    下列代码中,Time 组件用于展示当前的时间,由于服务端渲染和客户端 hydrate 时获取到的时间是不一致的,React 就会抛出异常。针对这种情况可以使用 NoSSR 进行优化:

    import { NoSSR } from '@modern-js/runtime/ssr';
    
    function Time() {
      return (
        <NoSSR>
          <div>Time: {Date.now()}</div>
        </NoSSR>
      );
    }

    使用场景

    在 CSR 中,常常需要根据当前浏览器 UA,或是当前页面 URL 的某个参数的不同,来渲染不同的内容。如果此时应用直接切换到 SSR,很有可能出现不符合预期的结果。

    Modern.js 在 SSR 上下文中提供了完整的浏览器端信息,可以利用上下文信息来决定组件在服务端的渲染结果。

    即便如此,如果应用里有太多的判断,开发者希望以后再使用上下文,或者不希望某些内容在服务端被渲染,可以使用 NoSSR 组件将这一部分剔除在服务端渲染外。