Skip to content

Commit dd468c2

Browse files
committed
Default parameters
1 parent 9b49d06 commit dd468c2

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

src/components/connector.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,31 @@ import wrapActionCreators from '../utils/wrapActionCreators';
33
import invariant from 'invariant';
44
import _ from 'lodash';
55

6+
const defaultMapStateToTarget = () => ({});
7+
const defaultMapDispatchToTarget = dispatch => ({dispatch});
8+
69
export default function Connector(store) {
7-
return (mapStateToTarget, mapDispatchToTarget = dispatch => ({dispatch})) => {
10+
return (mapStateToTarget, mapDispatchToTarget) => {
11+
12+
const finalMapStateToTarget = mapStateToTarget || defaultMapStateToTarget;
13+
14+
const finalMapDispatchToTarget = _.isPlainObject(mapDispatchToTarget) ?
15+
wrapActionCreators(mapDispatchToTarget) :
16+
mapDispatchToTarget || defaultMapDispatchToTarget;
17+
818
invariant(
9-
_.isFunction(mapStateToTarget),
10-
'mapStateToTarget must be a Function. Instead received $s.', mapStateToTarget
19+
_.isFunction(finalMapStateToTarget),
20+
'mapStateToTarget must be a Function. Instead received $s.', finalMapStateToTarget
1121
);
1222

1323
invariant(
14-
_.isPlainObject(mapDispatchToTarget) || _.isFunction(mapDispatchToTarget),
15-
'mapDispatchToTarget must be a plain Object or a Function. Instead received $s.', mapDispatchToTarget
24+
_.isPlainObject(finalMapDispatchToTarget) || _.isFunction(finalMapDispatchToTarget),
25+
'mapDispatchToTarget must be a plain Object or a Function. Instead received $s.', finalMapDispatchToTarget
1626
);
1727

18-
let slice = getStateSlice(store.getState(), mapStateToTarget);
19-
20-
const finalMapDispatchToTarget = _.isPlainObject(mapDispatchToTarget) ?
21-
wrapActionCreators(mapDispatchToTarget) :
22-
mapDispatchToTarget;
28+
let slice = getStateSlice(store.getState(), finalMapStateToTarget);
2329

24-
//find better name
25-
const actions = finalMapDispatchToTarget(store.dispatch);
30+
const boundActionCreators = finalMapDispatchToTarget(store.dispatch);
2631

2732
return (target) => {
2833

@@ -31,14 +36,14 @@ export default function Connector(store) {
3136
'The target parameter passed to connect must be a Function or a plain object.'
3237
);
3338

34-
//Initial update
35-
updateTarget(target, slice, actions);
39+
//Initial update
40+
updateTarget(target, slice, boundActionCreators);
3641

3742
const unsubscribe = store.subscribe(() => {
38-
const nextSlice = getStateSlice(store.getState(), mapStateToTarget);
43+
const nextSlice = getStateSlice(store.getState(), finalMapStateToTarget);
3944
if (!shallowEqual(slice, nextSlice)) {
4045
slice = nextSlice;
41-
updateTarget(target, slice, actions);
46+
updateTarget(target, slice, boundActionCreators);
4247
}
4348
});
4449
return unsubscribe;

0 commit comments

Comments
 (0)