Comments (7)
Yes, that's correct, the function passed as 2nd argument to useMemo() is usually called areEqual
, thus it semantically makes sense to not re-render if areEqual returns true.
See https://reactjs.org/docs/react-api.html#reactmemo for reference.
You can fix the eslint/display-name with
const PureProfileIcon = PureComponent(ProfileIcon);
PureProfileIcon.displayName = 'PureProfileIcon';
but that rule is purely useful during development as production will have names minified anyways so.
from why-did-you-render.
whats the point of
React.memo(props => <WrappedComponent {...props} />, () => true);
?
it makes it so every props, no metter what, would cause WrappedComponent
to be recreated.
EDIT: i got it, it means it should never re-render because "areEqual" returns "true"
from why-did-you-render.
Sorry, I don't understand. I'm using React.memo
to avoid re-render and the second argument is a callback which if true skip the props check.
Am I right?
from why-did-you-render.
I think something like shouldComponentUpdate() { return false }
.
Am I right?
from why-did-you-render.
i got it, it means it should never re-render because "areEqual" returns "true"
from why-did-you-render.
for the warning:
"Re-rendered because the props object itself changed but it's values are all equal"
using React.memo
should be enough:
export default WrappedComponent =>
React.memo(props => <WrappedComponent {...props} />); // no () => true
unless you dont want the component to ever re-render. then you indeed can add () => true
like you did:
export default WrappedComponent =>
React.memo(props => <WrappedComponent {...props} />, () => true);
I wouldn't call it "PureComponent" though.
If you want a pure component, use React.memo in the first way.
If a component never re-renders, you can call it:
StaticComponent
or even NeverReRender
or something.
from why-did-you-render.
@vzaidman, @ljosberinn thanks.
from why-did-you-render.
Related Issues (20)
- dom npm
- wdyr not work in next13 (repo provided) HOT 2
- wdyr not work in next13 (repo provided)
- WDYR includes full lodash library with window._ override HOT 6
- Cannot get WDYR output from nextjs dynamically loaded component (e.g. for no-ssr use case) HOT 2
- Project still being actively maintained? HOT 2
- Multiple React roots
- why-did-you-render + React Query
- No logs or anything about WDYR HOT 9
- Missing `ownerDataMap` in `notifier`
- Partially Working with React 18 + NextJS 13
- "Support for defaultProps will be removed" error after setting include: [/./] option HOT 2
- Tracking custom hooks issue HOT 2
- WhyDidYouRender is not working in Storybook.js
- Property 'React' doesn't exist HOT 1
- react-refresh-webpack-plugin not updating component when wrapped with React.memo.
- `trackAllPureComponents: true` is not working
- Next.js example is missing
- Links from the Credits section are broken HOT 1
- wyd support to react 19 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from why-did-you-render.