From e1d9ae27f048c44b108cd9c9691a98590abe0e93 Mon Sep 17 00:00:00 2001 From: Juan Gallo Date: Sun, 5 Nov 2017 13:20:24 -0300 Subject: [PATCH] only-client-render-external-dependencies example (#3229) --- .../README.md | 27 +++++++++++ .../package.json | 16 +++++++ .../pages/chart.js | 44 +++++++++++++++++ .../pages/index.js | 47 +++++++++++++++++++ 4 files changed, 134 insertions(+) create mode 100644 examples/only-client-render-external-dependencies/README.md create mode 100644 examples/only-client-render-external-dependencies/package.json create mode 100644 examples/only-client-render-external-dependencies/pages/chart.js create mode 100644 examples/only-client-render-external-dependencies/pages/index.js diff --git a/examples/only-client-render-external-dependencies/README.md b/examples/only-client-render-external-dependencies/README.md new file mode 100644 index 00000000..2530b589 --- /dev/null +++ b/examples/only-client-render-external-dependencies/README.md @@ -0,0 +1,27 @@ +# Hello World example + +## Only client render for external dependencies + +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/only-client-render-external-dependencies +cd only-client-render-external-dependencies +``` + +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 + +This example shows how to use an external dependency that only allows client-render. \ No newline at end of file diff --git a/examples/only-client-render-external-dependencies/package.json b/examples/only-client-render-external-dependencies/package.json new file mode 100644 index 00000000..267515f1 --- /dev/null +++ b/examples/only-client-render-external-dependencies/package.json @@ -0,0 +1,16 @@ +{ + "name": "only-client-render-external-dependencies", + "version": "1.0.0", + "scripts": { + "dev": "next", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "next": "latest", + "react": "^16.0.0", + "react-dom": "^16.0.0", + "recharts": "^1.0.0-beta.0" + }, + "license": "ISC" +} diff --git a/examples/only-client-render-external-dependencies/pages/chart.js b/examples/only-client-render-external-dependencies/pages/chart.js new file mode 100644 index 00000000..296ef9b0 --- /dev/null +++ b/examples/only-client-render-external-dependencies/pages/chart.js @@ -0,0 +1,44 @@ +import React from 'react' +let LineChart +let Line +class Chart extends React.Component { + constructor () { + super(); + this.state = { + chart: false, + data: [ + {name: 'Page A', uv: 4000, pv: 2400, amt: 2400}, + {name: 'Page B', uv: 3000, pv: 1398, amt: 2210}, + {name: 'Page C', uv: 2000, pv: 9800, amt: 2290}, + {name: 'Page D', uv: 2780, pv: 3908, amt: 2000}, + {name: 'Page E', uv: 1890, pv: 4800, amt: 2181}, + {name: 'Page F', uv: 2390, pv: 3800, amt: 2500}, + {name: 'Page G', uv: 3490, pv: 4300, amt: 2100}, + ] + } + } + + componentDidMount() { + LineChart = require('recharts').LineChart; + Line = require('recharts').Line; + + this.setState({ + chart: true + }) + } + + render () { + return ( +
+

Another chart

+ {this.state.chart == true && + + + + } +
+ ) + } +} + +export default Chart \ No newline at end of file diff --git a/examples/only-client-render-external-dependencies/pages/index.js b/examples/only-client-render-external-dependencies/pages/index.js new file mode 100644 index 00000000..9c3ba163 --- /dev/null +++ b/examples/only-client-render-external-dependencies/pages/index.js @@ -0,0 +1,47 @@ +import React from 'react' +import Link from 'next/link' +let LineChart +let Line + +class Index extends React.Component { + constructor () { + super(); + this.state = { + chart: false, + data: [ + {name: 'Page A', uv: 1000, pv: 2400, amt: 2400}, + {name: 'Page B', uv: 3000, pv: 1398, amt: 2210}, + {name: 'Page C', uv: 2000, pv: 9800, amt: 2290}, + {name: 'Page D', uv: 2780, pv: 3908, amt: 2000}, + {name: 'Page E', uv: 1890, pv: 4800, amt: 2181}, + {name: 'Page F', uv: 2390, pv: 3800, amt: 2500}, + {name: 'Page G', uv: 3490, pv: 4300, amt: 2100}, + ] + } + } + + componentDidMount() { + LineChart = require('recharts').LineChart; + Line = require('recharts').Line; + + this.setState({ + chart: true + }) + } + + render () { + return ( +
+

Chart

+ Go to another chart + {this.state.chart == true && + + + + } +
+ ) + } +} + +export default Index \ No newline at end of file