b1d8b839dd
* remove global npm install of create-next-app * add npx to create-next-app command in examples * add bash to shell snippets * add yarn create to next-app command in examples * fix READMEs named with lowercase * change READMEs to use UPPERCASE |
||
---|---|---|
.. | ||
components | ||
pages | ||
package.json | ||
README.md |
Example app with prefetching data
How to use
Using create-next-app
Download create-next-app
to bootstrap the example:
npx create-next-app --example with-data-prefetch with-data-prefetch-app
# or
yarn create next-app --example with-data-prefetch with-data-prefetch-app
Download manually
Download the example or clone the repo:
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-data-prefetch
cd with-data-prefetch
Install it and run:
npm install
npm run dev
Deploy it to the cloud with now (download)
now
The idea behind the example
Next.js lets you prefetch the JS code of another page just adding the prefetch
prop to next/link
. This can help you avoid the download time a new page you know beforehand the user is most probably going to visit.
In the example we'll extend the Link
component to also run the getInitialProps
(if it's defined) of the new page and save the resulting props on cache. When the user visits the page it will load the props from cache and avoid any request.
It uses sessionStorage
as cache but it could be replaced with any other more specialized system. Like IndexedDB or just an in-memory API with a better cache strategy to prune old cache and force new fetching.
This example is based on the ScaleAPI article explaining this same technique.
Note: it only works in production environment. In development Next.js just avoid doing the prefetch.