Skip to content

Commit f5db8fd

Browse files
committed
implement lazy loading without BrowserOnly
1 parent f42e9cd commit f5db8fd

File tree

1 file changed

+26
-25
lines changed
  • packages/docusaurus-theme-openapi-docs/src/theme/ResponseSchema

1 file changed

+26
-25
lines changed

packages/docusaurus-theme-openapi-docs/src/theme/ResponseSchema/index.tsx

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
* LICENSE file in the root directory of this source tree.
66
* ========================================================================== */
77

8-
import React, { Suspense } from "react";
8+
import React, { Suspense, useEffect, useState } from "react";
99

10-
import BrowserOnly from "@docusaurus/BrowserOnly";
1110
import Details from "@theme/Details";
1211
import MimeTabs from "@theme/MimeTabs"; // Assume these components exist
1312
import {
@@ -38,6 +37,25 @@ const ResponseSchemaComponent: React.FC<Props> = ({
3837
body,
3938
style,
4039
}): any => {
40+
const [isClient, setIsClient] = useState(false);
41+
42+
useEffect(() => {
43+
setIsClient(true);
44+
}, []);
45+
46+
if (!isClient) {
47+
return (
48+
<div className="openapi-explorer__loading-container">
49+
<div className="openapi-response__lds-ring">
50+
<div></div>
51+
<div></div>
52+
<div></div>
53+
<div></div>
54+
</div>
55+
</div>
56+
);
57+
}
58+
4159
if (
4260
body === undefined ||
4361
body.content === undefined ||
@@ -131,30 +149,13 @@ const ResponseSchemaComponent: React.FC<Props> = ({
131149
};
132150

133151
const ResponseSchema: React.FC<Props> = (props) => {
152+
const LazyComponent = React.lazy(() =>
153+
Promise.resolve({ default: ResponseSchemaComponent })
154+
);
134155
return (
135-
<BrowserOnly
136-
fallback={
137-
<div className="openapi-explorer__loading-container">
138-
<div className="openapi-response__lds-ring">
139-
<div></div>
140-
<div></div>
141-
<div></div>
142-
<div></div>
143-
</div>
144-
</div>
145-
}
146-
>
147-
{() => {
148-
const LazyComponent = React.lazy(() =>
149-
Promise.resolve({ default: ResponseSchemaComponent })
150-
);
151-
return (
152-
<Suspense fallback={<div>Loading...</div>}>
153-
<LazyComponent {...props} />
154-
</Suspense>
155-
);
156-
}}
157-
</BrowserOnly>
156+
<Suspense fallback={<div>Loading...</div>}>
157+
<LazyComponent {...props} />
158+
</Suspense>
158159
);
159160
};
160161

0 commit comments

Comments
 (0)