Skip to content

Commit a2df9e1

Browse files
committed
updating docs to include renderToStyleElements()
1 parent 1073acb commit a2df9e1

1 file changed

Lines changed: 41 additions & 8 deletions

File tree

apps/public-docsite-v9/src/Concepts/SSR/SSR.stories.mdx

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,63 @@ import { SSRDefaultOpen } from './MenuSSRDefaultOpen.stories';
77

88
Fluent UI React v9 fully supports Server-Side Rendering.
99

10-
## Basic setup
10+
### Basic setup
1111

1212
For any setup using SSR, you need to provide a `RendererProvider`, `SSRProvider` and `ThemeProvider` in the root file of your app. If these providers are not added, there will be issues when hydrating. See the following example:
1313

1414
```tsx
15+
import * as React from 'react';
16+
import * as ReactDOM from 'react-dom/server';
1517
import {
1618
createDOMRenderer,
1719
FluentProvider,
18-
SSRProvider,
20+
makeStyles,
1921
RendererProvider,
22+
renderToStyleElements,
23+
SSRProvider,
2024
webLightTheme,
2125
} from '@fluentui/react-components';
2226

23-
function App() {
24-
return (
25-
<RendererProvider renderer={createDOMRenderer()}>
27+
const useExampleStyles = makeStyles({
28+
root: {
29+
color: 'red',
30+
},
31+
});
32+
33+
const ExampleComponent: React.FC = () => {
34+
const classes = useExampleStyles();
35+
36+
return <div className={classes.root}>Hello world</div>;
37+
};
38+
39+
const server = express();
40+
41+
server.get('/', (req, res) => {
42+
const renderer = createDOMRenderer();
43+
44+
const html = ReactDOM.renderToString(
45+
<RendererProvider renderer={renderer}>
2646
<SSRProvider>
2747
<FluentProvider theme={webLightTheme}>
28-
<div className="App">{/* ... */}</div>
48+
<ExampleComponent />
2949
</FluentProvider>
3050
</SSRProvider>
31-
</RendererProvider>
51+
</RendererProvider>,
3252
);
33-
}
53+
54+
res.send(`
55+
<html>
56+
<head>
57+
${renderToStyleElements(renderer)}
58+
</head>
59+
<body>
60+
<div id="root">${html}</div>
61+
</body>
62+
</html>
63+
`);
64+
});
65+
66+
server.listen(3000, 'localhost');
3467
```
3568

3669
### Next.js

0 commit comments

Comments
 (0)