From 80825c45f9ef83ffa806f0be9fa42a26920d4ad0 Mon Sep 17 00:00:00 2001 From: Ming Date: Wed, 18 Sep 2024 11:51:03 +0800 Subject: [PATCH] fix: the problem of NoSSR with Suspense (#6221) --- .changeset/orange-carrots-study.md | 6 ++++++ .../src/core/server/react/nossr/index.ts | 15 +++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .changeset/orange-carrots-study.md diff --git a/.changeset/orange-carrots-study.md b/.changeset/orange-carrots-study.md new file mode 100644 index 000000000000..a6d0359accc1 --- /dev/null +++ b/.changeset/orange-carrots-study.md @@ -0,0 +1,6 @@ +--- +'@modern-js/runtime': patch +--- + +fix: the problem of NoSSR with Suspense +fix: 修复 NoSSR 在 suspense 下 的问题 diff --git a/packages/runtime/plugin-runtime/src/core/server/react/nossr/index.ts b/packages/runtime/plugin-runtime/src/core/server/react/nossr/index.ts index 1c6d4fa0543e..7d7d2132a344 100644 --- a/packages/runtime/plugin-runtime/src/core/server/react/nossr/index.ts +++ b/packages/runtime/plugin-runtime/src/core/server/react/nossr/index.ts @@ -1,16 +1,15 @@ -import React, { type ReactElement, useEffect, useState } from 'react'; +import React from 'react'; +import { type ReactElement, useEffect, useState } from 'react'; -let csr = false; export const NoSSR = ( - props: React.PropsWithChildren<{ fallback?: ReactElement | string }>, -) => { - const [isMounted, setMounted] = useState(csr); + props?: React.PropsWithChildren<{ fallback?: ReactElement | string }>, +): ReactElement | null => { + const [isMounted, setMounted] = useState(false); useEffect(() => { - csr = true; setMounted(true); - }); + }, []); - const { children, fallback = null } = props; + const { children, fallback = null } = props || {}; return React.createElement( React.Fragment, null,