Comments (2)
Thanks for opening this Arthur. This has had me thinking quite a bit. One of my thoughts about this is highlighted in this article pretty nicely - https://kentcdodds.com/blog/usememo-and-usecallback. From the first line:
Performance optimizations ALWAYS come with a cost but do NOT always come with a benefit.
I think in this case the addition of the useMemo
and useCallback
hooks inside of the useDayzed
hook might fall into that. This is just an assumption, but I would guess for most people using the library the implementation of the useDayzed
hook is mostly isolated in a component that is focused on receiving props that directly tie to the calendar in some way. So anytime a prop gets passed down the useMemo
and useCallback
hooks just become an additional cost instead of a performance optimization as the changed prop would cause those to recalculate the values instead of pulling them from the cache. So I would be a little wary of adding this to the useDayzed
hook directly as that would be something that everyone using the library would be opted-in to.
That being said, this got me thinking about how we could memoize this and I came to this thought - the biggest thing the useDayzed
hook is abstracting is the offset state value, but aside from that, the rest of the logic can be converted into a pure function. We could even use the pure function in the useDayzed
hook itself! I think this could be a nice balance as it still should be backwards compatible but doesn't opt in everyone using the library to those optimizations unessararilsy. For those that really need the optimizations, we can export the pure function and then it can be memoized just like any other function. Here is a code sandbox with an example.
I'm curios on your thoughts with this approach. Anything I might be missing? I am curious if there is a specific use case you had for this that could help us with talking about any tradeoffs as well.
Thanks!
from dayzed.
Feel free to reopen this with any feedback you have, but for now I am going to close it. Thanks!
from dayzed.
Related Issues (20)
- Rename fillAdjacentMonths to showOutsideDays HOT 4
- Provide option to go forward/backward a variable number of months HOT 3
- Move date-fns to dependencies HOT 6
- Compatibility with React 15? HOT 1
- Upgrade to use date-fns Version 2 HOT 3
- Pass the event to the onDateSelected callback HOT 5
- Unable to use useDayzed with typescript HOT 5
- A possible bug in @types HOT 2
- Proper way to show dayzed-powered calendar alongside native date input? HOT 1
- How to change timezone? HOT 2
- Translate aria-labels HOT 3
- Would you be interested in a TypeScript version HOT 2
- [que[ - How to change date from outside of the calendar HOT 2
- Is there any possibility to include time selection along with date? HOT 2
- Changing offset with state HOT 2
- Incorrect handling of years 0000-0099 HOT 2
- Weekly view
- Internationalization of accessibility properties from getDateProps HOT 3
- Offset -1 not working with getBackProps and getForwardProps 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 dayzed.