Skip to content

Commit

Permalink
Add example of arguments mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
markerikson authored Nov 1, 2023
1 parent 1d91a3f commit 02d157c
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,17 @@ A: Yes. Reselect has no dependencies on any other package, so although it was de

### Q: How do I create a selector that takes an argument?

Conceptually, Reselect works like this internally:

```ts
const finalSelector = (...args) => {
const extractedValues = inputFunctions.map(input => input(...args));
return output(...extractedValues);
}
```

In other words, all the arguments passed to the selector function are immediately passed to all of the inputs.

As shown in the API reference section above, provide input selectors that extract the arguments and forward them to the output selector for calculation:

```js
Expand All @@ -546,6 +557,7 @@ const selectItemsByCategory = createSelector(
)
```


More generally, you can have N arguments passed to the selector, and you can have M input functions extracting values from any of those arguments. All M extracted values get passed to the output function.

### Q: The default memoization function is no good, can I use a different one?
Expand Down

0 comments on commit 02d157c

Please sign in to comment.