rsnext/examples/with-why-did-you-render
leung018 66597be8a7
Add .yarn/install-state.gz to .gitignore (#56637)
### Reason for making this change
https://yarnpkg.com/getting-started/qa#:~:text=yarn%2Finstall%2Dstate.,your%20workspaces%20all%20over%20again.
In the official documentation of `yarn`, it is stated that `.yarn/install-state.gz` is an optimization file that developer shouldn't ever have to commit. However, currently, when running `create-next-app`, `.yarn/install-state.gz` is being commited.

### Remaining work
I apologize for only modifying one template initially to initiate the discussion first.

If this change is agreed upon,  it should be synchronized with other `.gitignore` templates. Would it be possible to follow a similar approach as in https://github.com/vercel/next.js/pull/47241? I would appreciate any assistance in syncing this change.
2023-10-18 16:34:48 +00:00
..
components Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00
pages Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00
scripts Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00
.gitignore Add .yarn/install-state.gz to .gitignore (#56637) 2023-10-18 16:34:48 +00:00
next-env.d.ts Remove incorrect entries for pnpm debug log (#47241) 2023-03-26 22:26:05 -07:00
next.config.js Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00
package.json Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00
README.md update example Deploy button URLs (#48842) 2023-04-26 13:31:44 -04:00
tsconfig.json Convert with-why-did-you-render example to TypeScript (#43736) 2022-12-07 14:10:04 +01:00

Why did you render

This is a simple example of how to use why-did-you-render within a Next.js app.

We are essentially extending webpack config to allow the monkey patched React version of WDYR in development mode and adding to our application by importing wdyr.ts at the top of Next.js _app.tsx.

By default, all pure components will be tracked, but you can add Component.whyDidYouRender = true to regular function components in case you need.

In this example, 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.

When using Typescript, call the file wdyr.ts instead and add the following line to the top of the file to import the package's types:

/// <reference types="@welldone-software/why-did-you-render" />

Deploy your own

Deploy the example using Vercel or preview live with StackBlitz

Deploy with Vercel

How to use

Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:

npx create-next-app --example with-why-did-you-render with-why-did-you-render-app
yarn create next-app --example with-why-did-you-render with-why-did-you-render-app
pnpm create next-app --example with-why-did-you-render with-why-did-you-render-app

Deploy it to the cloud with Vercel (Documentation).