Comments (3)
Eventually, need to make sure we are memoizing a proper thing. The logic cannot be based on the input props
in getAreasList
, since a change in props doesn't guarantee the change in the template-* prop values.
Suggestions
- Perform
filterTemplates(props)
. Takes in a props object, returns an object of template-* props. - Invoke
getAreasList(templateProps)
with the result offilterTemplates
function call (that means accepts only template-* props at the first place). Can be memoized based on the template props received.
Pros:
getAreasList
has narrower input scale and can be memoized
Cons:
- There is going to be a small iteration overlap equal to
templatePropsLength
, because bothfilterTemplate
andgetAreasList
will iterate over a defined set of template props.
from atomic-layout.
This will have no performance effect whatsoever if parseTemplates
is called in the constructor
method. Moving parseTemplates
into another lifecycle method is not desired as well, since layout declaration is not something you change during the component's lifecycle.
I would put this optimization task on hold unless there is a known performance issue.
from atomic-layout.
At the moment I see no reason to provide this optimization. Feel free to post some examples when dynamic layout ares would be applicable, but in my opinion this is something that is not meant to change during the component's lifecycle.
Closing for now.
from atomic-layout.
Related Issues (20)
- SSR: "useLayoutEffect does nothing on the server" HOT 2
- Support the "order" CSS property
- Responsive props suffixes ignore casing (templateLg = templatelg) HOT 3
- I can't attach a ref to Composition, because Composition does not use React.forwardRef HOT 1
- Rename "useResponsiveComponent" since it's not a hook HOT 2
- Warning: React does not recognize the `A` prop on a DOM element HOT 1
- Add "Area" component HOT 1
- Exported components must have "displayName"
- Rerendering of parent component causes Only to unmount and mount its children HOT 4
- Replace "MediaQuery" component with "useMediaQuery" hook
- Export a utility to compose inline @media queries HOT 2
- Input in a grid item loses focus due to extra parent rerendering HOT 3
- makeResponsive causes memory heap on hot reload
- Creating a 3 column layout. HOT 3
- useResponsiveValue might require to fire an effect for a dependency change HOT 4
- the except prop on the Only component get ignored with a custom breakpoint ref HOT 1
- useResponsiveValue won't use custom breakpoint names HOT 2
- Warning: React does not recognize the `sortingOrder` prop on a DOM element - `DataGrid`
- useResponsiveProps always returns empty object initialy client-side
- Are you considering supporting Vue or native JavaScript usage . HOT 1
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 atomic-layout.