You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A complex example of how to do server-side rendering with
React and TypeScript so that component code can be shared between server and browser (also known as isomorphic javascript).
Server-Side Rendering (SSR) leads to fast initial page loads, search-engine-friendly pages, and of course...its all type safe!
Getting Started
Clone the repo, change directory, install dependencies, build the code, and run it!
git clone https://github.com/styfle/react-server-example-tsx.git
cd react-server-example-tsx
npm install
npm run vercel-build
npm run test
npm start
Then navigate to https://localhost:3007 and click on the buttons to see some reactive events in action.
Preventing XSS
The original code from mhart attempts to sanitize the props by escaping and then inserting into a <script> tag.
I avoided this by performing 1 extra http request to fetch the props as json before initializing React in the browser. This means that click handlers will not be initialized until the data is returned and React can pick up where it left off after the server-side render and attach the click even handlers. This is the purpose of ReactDOM.hydrate.