9f9214abe5
This PR updates the docs and examples for `create-next-app` to include pnpm usage. The following script was used to update every example README: ```js const fs = require('fs') const examples = fs.readdirSync('./examples') for (let example of examples) { const filename = `./examples/${example}/README.md` const markdown = fs.readFileSync(filename, 'utf8') const regex = new RegExp(`^yarn create next-app --example (.*)$`, 'gm') const output = markdown.replace(regex, (yarn, group) => { const pnpm = `pnpm create next-app -- --example ${group}` return `${yarn}\n# or\n${pnpm}` }) fs.writeFileSync(filename, output) } ``` |
||
---|---|---|
.. | ||
components | ||
pages | ||
scripts | ||
.gitignore | ||
babel.config.js | ||
package.json | ||
README.md |
Why did you render
This is a simple example of how to use why-did-you-render.
The header component will rerender despite the state staying the same.
You can see why-did-you-render
console logs about this redundant re-render in the developer console.
Installation guide
-
add
why-did-you-render
to the project by running:yarn add @welldone-software/why-did-you-render
-
Create
scripts/wdyr.js
with the code:import React from 'react' if (process.env.NODE_ENV === 'development') { if (typeof window !== 'undefined') { const whyDidYouRender = require('@welldone-software/why-did-you-render') whyDidYouRender(React, { trackAllPureComponents: true, }) } }
-
Import
scripts/wdyr.js
as the first import of_app
. -
Make sure that
react-preset
uses@welldone-software/why-did-you-render
to import the monkey patchedReact
with WDYR, by modifyingnext/babel
inbabel.config.js
:
// babel.config.js
module.exports = function (api) {
const isServer = api.caller((caller) => caller?.isServer)
const isCallerDevelopment = api.caller((caller) => caller?.isDev)
const presets = [
[
'next/babel',
{
'preset-react': {
importSource:
!isServer && isCallerDevelopment
? '@welldone-software/why-did-you-render'
: 'react',
},
},
],
]
return { presets }
}
Deploy your own
Deploy the example using Vercel or preview live with StackBlitz
How to use
Execute create-next-app
with npm or Yarn to bootstrap the example:
npx create-next-app --example with-why-did-you-render with-why-did-you-render-app
# or
yarn create next-app --example with-why-did-you-render with-why-did-you-render-app
# or
pnpm create next-app -- --example with-why-did-you-render with-why-did-you-render-app
Deploy it to the cloud with Vercel (Documentation).