diff --git a/examples/progressive-render/README.md b/examples/progressive-render/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2af3fb7d4da17f294ac9dcfbe5c6d105daec9ecc --- /dev/null +++ b/examples/progressive-render/README.md @@ -0,0 +1,36 @@ +# Example app implementing progressive server-side render + +## How to use + +Download the example [or clone the repo](https://github.com/zeit/next.js): + +```bash +curl https://codeload.github.com/zeit/next.js/tar.gz/master | tar -xz --strip=2 next.js-master/examples/progressive-render +cd progressive-render +``` + +Install it and run: + +```bash +npm install +npm run dev +``` + +Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download)) + +```bash +now +``` + +## The idea behind the example + +Sometimes you want to **not** server render some parts of your application. That can be third party components without server render capabilities, components that depends on `window` and other browser only APIs or just because that content isn't important enough for the user (eg. below the fold content). + +In that case you can wrap the component in `react-no-ssr` which will only render the component client-side. + +This example features: + +* An app with a component that must only be rendered in the client +* A loading component that will be displayed before rendering the client-only component + +**Example**: https://progressive-render-raceuevkqw.now.sh/ diff --git a/examples/progressive-render/components/Loading.js b/examples/progressive-render/components/Loading.js new file mode 100644 index 0000000000000000000000000000000000000000..3f54ec2076e43c500977cca919aa0a398cd07b3c --- /dev/null +++ b/examples/progressive-render/components/Loading.js @@ -0,0 +1,15 @@ +import React from 'react' + +export default () => ( +
+

Loading...

+ +
+) diff --git a/examples/progressive-render/package.json b/examples/progressive-render/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7742195e0a1d3593579ef99e5ba1cd6eb737501b --- /dev/null +++ b/examples/progressive-render/package.json @@ -0,0 +1,12 @@ +{ + "name": "progressive-render", + "scripts": { + "dev": "next", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "next": "latest", + "react-no-ssr": "1.1.0" + } +} diff --git a/examples/progressive-render/pages/index.js b/examples/progressive-render/pages/index.js new file mode 100644 index 0000000000000000000000000000000000000000..860b674b97b0737addc8a69446cb0a5b64c804f1 --- /dev/null +++ b/examples/progressive-render/pages/index.js @@ -0,0 +1,30 @@ +import React from 'react' +import NoSSR from 'react-no-ssr' +import Loading from '../components/Loading' + +export default () => ( +
+
+

+ This section is server-side rendered. +

+
+ + }> +
+

+ This section is only client-side rendered. +

+
+
+ + +
+)