GithubHelp home page GithubHelp logo

Comments (2)

mkartchner994 avatar mkartchner994 commented on May 25, 2024

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.

mkartchner994 avatar mkartchner994 commented on May 25, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.