reselect
lodash
Our great sponsors
reselect | lodash | |
---|---|---|
46 | 187 | |
18,996 | 58,812 | |
0.0% | 0.4% | |
9.7 | 5.2 | |
14 days ago | 9 days ago | |
TypeScript | JavaScript | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
reselect
- Redux Toolkit 2.0: new features, faster perf, smaller bundle sizes (plus major versions for all Redux family packages!)
-
Redux Toolkit 2.0: new features, faster perf, smaller bundle sizes, and more
- Throws better errors in an RSC environment
- https://github.com/reduxjs/react-redux/releases/tag/v9.0.0
## Reselect 5.0:
- Switches to a new `weakMapMemoize` memoizer as default
- Renames `defaultMemoize` to `lruMemoize`
- Allows passing memoizer options direct to `createSelector`
- Many TS improvements
- https://github.com/reduxjs/reselect/releases/tag/v5.0.1
## Redux Thunk 3.0:
- Drops the default export and switches to named exports ( `{thunk, withExtraArgument}` )
- https://github.com/reduxjs/redux-thunk/releases/tag/v3.1.0
This has been a _huge_ year-long development effort!
We're thrilled to get these improvements out. The tooling and bundle improvements will help all users, and we think the features and TS changes will improve the Redux dev experience significantly.
Thank you SO MUCH to everyone who has contributed or helped test out the work!
Please file bug reports for the inevitable issues that pop up post-release!
but now I'm going off on a conf trip and going to take a very well-earned break from Redux work for December :)
-
45 NPM Packages to Solve 16 React Problems
reselect -> For making faster queries to store.
-
Top 7 Libraries for Blazingly Fast ReactJS Applications
Reselect solves this problem by memorizing the values and only passing what’s necessary.
-
20 Essential Parts Of Any Large Scale React App
reselect : Selector library to optimize your store access
-
Revolutionize Your React App with Redux: A Beginner's Guide to Simplifying State Management(PART 2)
Reselect documentation:
-
20 Best Libraries and Tools for React Developers
Reselect is a library for creating memoized “selector” functions. Commonly used with Redux, to slice state and provide just the necessary subtree to a React component.
-
Please review my 1st react project
For the redux part, you need to use two hooks. The first one is for sending data and that is useDispatch and for getting data from redux is useSelector. This link will help you a lot. The only that left is Reselect concept. The thing with redux is that when you update one state inside of the redux store the whole thing updates itself so basically it may cause you to re-render your components. Reselect will prevent that but it's a little bit advanced topic whenever you were comfortable enough with redux I suggest you learn to use reselect. Other than these Really good work with the project.😉👍 welcome to the community. 😁
-
Killing mutants to improve your tests
At my current client we're working on having a frontend architecture for writing SPAs in JavaScript similar to re-frame's one: an event-driven bus with effects and coeffects for state management[1] (commands) and subscriptions using reselect's selectors (queries).
-
TypeScript is terrible for library developers
Heh, it's amusing to see Redux Toolkit referenced here. I'm one of the two main RTK maintainers. My co-maintainer Lenz Weber is responsible for most of our TS type wizardry.
Agreed that writing TS types for libs can be a pain. I actually did a talk recently on "Lessons Learned Maintaining TS Libraries" [0], where I talked about some of the techniques we used, and some possible TS changes that would be helpful for us as maintainers.
As one recent example, TS made a change in a 4.8 pre-alpha that broke RTK's `createSlice` types. Lenz tried to come up with a fix, couldn't, and had to add a workaround to check what TS version is being used and specifically use an altered type. Since there _isn't_ a good way to know what TS version is being used, Lenz resorted to hacking together a new package that abuses the `typesVersions` property to define a different TS type for _every_ TS major+minor version combo, and then used that to decide what the RTK type should look like conditionally [1].
Another pain point is debugging type transformations. I reworked the Reselect types in 4.1.x to do a much better job of inferring the argument types for the final selector, based on the intersection of all the input selector arguments. This ended up as a monstrous type that does a types-level map + transpose + intersection [2]. It took me weeks to get this working right, and I frequently had to break it down into multiple small intermediate types to see how TS was processing each step.
I know that someone on Twitter was recently working on an alternate TS type-checker based on bytecode, and they said they had some kind of a working types-level debugger [3]. Having something like that officially, where I could see each step of how TS was transforming the types, would be _hugely_ valuable.
There's a couple folks like AndaristRake who are able to dig into the internals of the TS compiler itself to trace how it's interpreting the types. I definitely don't have that ability :)
[0] https://blog.isquaredsoftware.com/2022/05/presentations-ts-l...
[1] https://github.com/reduxjs/redux-toolkit/pull/2547
[2] https://github.com/reduxjs/reselect/blob/v4.1.5/src/types.ts...
[3] https://twitter.com/MarcJSchmidt/status/1539787500788613120
lodash
-
8 NPM Packages for JavaScript Beginners [2024][+tutorials]
Lodash.js is like the Swiss Army knife for JavaScript developers. Need to manipulate data structures or dabble in functional programming? Lodash is here to save the day with its arsenal of utilities. It's all about making your code cleaner and your life easier, which is probably why big guns like Google and Airbnb have it in their toolkit.
-
Full Stack Web Development Concept map
lodash - utility library enabling things like deep object comparison that aren't easy to do with javascript out of the box. docs
-
JavaScript Libraries That You Should Know
5. Lodash
-
Top 20 Frontend Interview Questions With Answers
It's also important to ensure that you're importing libraries correctly, so webpack can perform tree shaking effectively. For example, let's import lodash, as follows:
-
Coming to grips with JS: a Rubyist's deep dive
lodash and You Might Not Need Lodash
-
Deep Cloning Objects in JavaScript, the Modern Way
A lot of Lodash functions are implemented as combinations of other Lodash functions, so importing a single function actually imports half of Lodash under the hood:
https://github.com/lodash/lodash/blob/main/src/.internal/bas...
-
5 best JavaScript multidimensional array libraries
Lodash is a popular utility library that provides a wide range of methods for dealing with arrays, collections, and objects. Lodash, while not expressly built for multidimensional arrays, may be a useful tool for fundamental array operations.
-
How to secure JavaScript applications right from the CLI
To help you quickly set up a project test with the Snyk CLI, a sample JavaScript project has been made available in this GitHub repository with all the necessary manifest files. The project is a simple quote API that uses Lodash and Express as their dependencies. The quote API has a GET / endpoint that returns a list of quotes and a GET /random endpoint that returns a random quote.
-
Lodash just declared issue bankruptcy and closed every issue and open PR
I don't think isEmpty is O(n) except in the case where the object is a prototype[1] - I assume that's one of those weird JS edge cases - otherwise it does what you expect, which is to iterate with a for-in loop and return on the first iteration, so it is O(1).
[1]: https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L114...
lodash/fp is an optional distribution of lodash that did what the core library did, but did so in a more flexible, powerful, composeable way that makes it easier to construct powerful functions. it was separate from the core, but based heavily on it. https://github.com/lodash/lodash/wiki/FP-Guide
at the time, nothing was settled. we were in a pioneering mode of building; we didn't know what people would find useful or what the future would hold. there were a lot of different ideas floating around, and lodash was trying to stay the same while also offer a port to this barely-subtly-different paradigm, to see what value might be found there. saying that "introduced" it feels like a crude reduction to me; he allowed people the option they asked for.
i personally think fp - in particular - "pointsfree" fp - has huge down sides to being understandable. but it also is a much more succinct and capable way of expressing things, and multiple times a week i run into situations where auto-currying or reverse args would make the code i write much cleaner & not damage code comprehension.
rather than call fp a fad, & insult the author for ever letting it in, i think there's room to say that it's sad that js had to stay on the lowest common denominator. the future was unable to be changed, the old ways stuck. we lost some really good opportunity & capabilities. that said, i still think the pointsfree style is hugely damaging & responsible for greatly reducing the chances we had to improve. instead, we're not "moving on", we're going back to square 1, to the only thing we've ever known or done. that makes me a little sad, to have the pioneering pack up & move back into the city.
What are some alternatives?
ramda - :ram: Practical functional Javascript
underscore - JavaScript's utility _ belt
lazy.js - Like Underscore, but lazier
RxJS
Sugar - A Javascript library for working with native objects.
immutable-js - Immutable persistent data collections for Javascript which increase efficiency and simplicity.
Mout - Modular JavaScript Utilities
Rambda - Faster and smaller alternative to Ramda
recompose - A React utility belt for function components and higher-order components.
jQuery - jQuery JavaScript Library
Immer - Create the next immutable state by mutating the current one
use-context-selector - React useContextSelector hook in userland