1
1
# Change log
2
2
3
- All notable changes to this project will be documented in this file.
3
+ Changes in this project are primarily documented in the Github release notes:
4
+
5
+ - https://github.com/reduxjs/reselect/releases
6
+
7
+ Changes from v4.0.0 and earlier are documented in this file
8
+
4
9
This project adheres to [ Semantic Versioning] ( http://semver.org/ ) .
5
10
6
11
## [ v4.0.0] ( https://github.com/reduxjs/reselect/releases/tag/v4.0.0 ) - 2018/09/30
7
12
8
13
### New Features
9
14
10
15
Exposed selector dependencies (#251 )
11
- Use provided memoize function for selectors (#297 )
16
+ Use provided memoize function for selectors (#297 )
12
17
13
18
### Breaking Changes
14
19
15
- Updated TypeScript typings (#274 , #315 )
20
+ Updated TypeScript typings (#274 , #315 )
16
21
17
22
## [ v3.0.0] ( https://github.com/reduxjs/reselect/releases/tag/v3.0.0 ) - 2017/03/24
18
23
@@ -28,7 +33,7 @@ For performance reasons, a selector is now not recalculated if its input is equa
28
33
#### Example:
29
34
30
35
``` js
31
- import { createSelector } from ' reselect' ;
36
+ import { createSelector } from ' reselect'
32
37
33
38
const mySelector = createSelector (
34
39
state => state .values .filter (val => val < 5 ),
@@ -38,7 +43,7 @@ const mySelector = createSelector(
38
43
}
39
44
)
40
45
41
- var createSelector = require (' ./dist/reselect.js' ).createSelector ;
46
+ var createSelector = require (' ./dist/reselect.js' ).createSelector
42
47
43
48
const mySelector = createSelector (
44
49
state => state .values .filter (val => val < 5 ),
@@ -48,14 +53,14 @@ const mySelector = createSelector(
48
53
}
49
54
)
50
55
51
- var state1 = {values: [1 ,2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]};
52
- console .log (mySelector (state1));
53
- state1 .values = [3 ,4 , 5 , 6 , 7 , 8 , 9 ];
54
- console .log (mySelector (state1));
55
- var state2 = {values: [1 ,2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]};
56
- console .log (mySelector (state2));
57
- var state3 = {values: [3 ,4 , 5 , 6 , 7 ]};
58
- console .log (mySelector (state3));
56
+ var state1 = { values: [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] }
57
+ console .log (mySelector (state1))
58
+ state1 .values = [3 , 4 , 5 , 6 , 7 , 8 , 9 ]
59
+ console .log (mySelector (state1))
60
+ var state2 = { values: [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] }
61
+ console .log (mySelector (state2))
62
+ var state3 = { values: [3 , 4 , 5 , 6 , 7 ] }
63
+ console .log (mySelector (state3))
59
64
```
60
65
61
66
#### Output in v2.5.4:
@@ -171,36 +176,36 @@ There is a small chance that this could cause a breaking change in code that con
171
176
172
177
#### ` createStructuredSelector `
173
178
174
- ` createStructuredSelector ` is a convenience function that helps with a common pattern when using Reselect. The selector passed to a connect decorator often just takes other selectors and maps them to keys in an object:
179
+ ` createStructuredSelector ` is a convenience function that helps with a common pattern when using Reselect. The selector passed to a connect decorator often just takes other selectors and maps them to keys in an object:
175
180
176
181
``` js
177
- const mySelectorA = state => state .a ;
178
- const mySelectorB = state => state .b ;
182
+ const mySelectorA = state => state .a
183
+ const mySelectorB = state => state .b
179
184
180
185
const structuredSelector = createSelector (
181
- mySelectorA,
182
- mySelectorB,
183
- mySelectorC,
184
- (a , b , c ) => ({
185
- a,
186
- b,
187
- c
188
- })
189
- );
186
+ mySelectorA,
187
+ mySelectorB,
188
+ mySelectorC,
189
+ (a , b , c ) => ({
190
+ a,
191
+ b,
192
+ c
193
+ })
194
+ )
190
195
```
191
196
192
197
` createStructuredSelector ` takes an object whose properties are input-selectors and returns a structured selector. The structured selector returns an object with the same keys as the ` inputSelectors ` argument, but with the selectors replaced with their values.
193
198
194
199
``` js
195
- const mySelectorA = state => state .a ;
196
- const mySelectorB = state => state .b ;
200
+ const mySelectorA = state => state .a
201
+ const mySelectorB = state => state .b
197
202
198
203
const structuredSelector = createStructuredSelector ({
199
204
x: mySelectorA,
200
205
y: mySelectorB
201
- });
206
+ })
202
207
203
- const result = structuredSelector ({a: 1 , b: 2 }); // will produce {x: 1, y: 2}
208
+ const result = structuredSelector ({ a: 1 , b: 2 }) // will produce {x: 1, y: 2}
204
209
```
205
210
206
211
## [ v1.0.0] ( https://github.com/reduxjs/reselect/releases/tag/v1.0.0 ) - 2015/09/09
@@ -225,22 +230,19 @@ js:next field added to package.json
225
230
#### Before
226
231
227
232
``` js
228
- import { isEqual } from ' lodash' ;
229
- import { createSelectorCreator } from ' reselect' ;
233
+ import { isEqual } from ' lodash'
234
+ import { createSelectorCreator } from ' reselect'
230
235
231
- const deepEqualsSelectorCreator = createSelectorCreator (isEqual);
236
+ const deepEqualsSelectorCreator = createSelectorCreator (isEqual)
232
237
```
233
238
234
239
#### After
235
240
236
241
``` js
237
- import { isEqual } from ' lodash' ;
238
- import { createSelectorCreator , defaultMemoize } from ' reselect' ;
242
+ import { isEqual } from ' lodash'
243
+ import { createSelectorCreator , defaultMemoize } from ' reselect'
239
244
240
- const deepEqualsSelectorCreator = createSelectorCreator (
241
- defaultMemoize,
242
- isEqual
243
- );
245
+ const deepEqualsSelectorCreator = createSelectorCreator (defaultMemoize, isEqual)
244
246
```
245
247
246
248
### New features
@@ -255,7 +257,7 @@ Selector creators can receive a variadic number of dependencies as well as an ar
255
257
const selector = createSelector (
256
258
[state => state .a , state => state .b ],
257
259
(a , b ) => a * b
258
- );
260
+ )
259
261
```
260
262
261
263
#### After
@@ -265,7 +267,7 @@ const selector = createSelector(
265
267
state => state .a ,
266
268
state => state .b ,
267
269
(a , b ) => a * b
268
- );
270
+ )
269
271
```
270
272
271
273
#### Access ` ownProps ` in Selector
@@ -274,32 +276,32 @@ Selector dependencies can receive a variadic number of parameters allowing a sel
274
276
275
277
``` js
276
278
const selector = createSelector (
277
- ( state ) => state .a ,
279
+ state => state .a ,
278
280
(state , props ) => state .b * props .c ,
279
281
(_ , props ) => props .d ,
280
282
(a , bc , d ) => a + bc + d
281
- );
283
+ )
282
284
```
283
285
284
286
#### Configurable Memoize Function
285
287
286
288
``` js
287
- import { createSelectorCreator } from ' reselect' ;
288
- import memoize from ' lodash.memoize' ;
289
+ import { createSelectorCreator } from ' reselect'
290
+ import memoize from ' lodash.memoize'
289
291
290
- let called = 0 ;
291
- const customSelectorCreator = createSelectorCreator (memoize, JSON .stringify );
292
+ let called = 0
293
+ const customSelectorCreator = createSelectorCreator (memoize, JSON .stringify )
292
294
const selector = customSelectorCreator (
293
295
state => state .a ,
294
296
state => state .b ,
295
297
(a , b ) => {
296
- called++ ;
297
- return a + b;
298
+ called++
299
+ return a + b
298
300
}
299
- );
300
- assert .equal (selector ({a: 1 , b: 2 }), 3 );
301
- assert .equal (selector ({a: 1 , b: 2 }), 3 );
302
- assert .equal (called, 1 );
303
- assert .equal (selector ({a: 2 , b: 3 }), 5 );
304
- assert .equal (called, 2 );
301
+ )
302
+ assert .equal (selector ({ a: 1 , b: 2 }), 3 )
303
+ assert .equal (selector ({ a: 1 , b: 2 }), 3 )
304
+ assert .equal (called, 1 )
305
+ assert .equal (selector ({ a: 2 , b: 3 }), 5 )
306
+ assert .equal (called, 2 )
305
307
```
0 commit comments