Skip to content

Commit 549bb8d

Browse files
committed
fix(connect): Fix a bug where props with falsy values would not be sent to the wrapped component
1 parent 47db56b commit 549bb8d

3 files changed

Lines changed: 23 additions & 1 deletion

File tree

.npmignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@ src/
22
test/
33
.nyc_output/
44
coverage/
5+
examples/
6+
*.webpack.config.js
7+
.babelrc
8+
.eslintrc
9+
.gitignore

src/connect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const connect = (propsToPass, callbackName) => (Component) => {
2525
}
2626

2727
propSubscritpion(prop) {
28-
if (prop.value) {
28+
if (prop.value !== undefined) {
2929
this.setState({
3030
[prop.name]: prop.value,
3131
});

test/cycleReactDriver.spec.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,23 @@ describe('Cycle React Driver', () => {
165165
expect(renderMock.getWrapper().find(Dummy)).to.not.have.prop('prop');
166166
});
167167

168+
it('Should render a prop from the driver if its value is falsy but defined', () => {
169+
const ConnectedDummy = connect()(Dummy);
170+
const cycleReactDriver = makeCycleReactDriver(<ConnectedDummy />, '#app');
171+
const prop = new Rx.Subject();
172+
173+
cycleReactDriver(prop);
174+
prop.next({ name: 'prop1', value: 0 });
175+
prop.next({ name: 'prop2', value: null });
176+
prop.next({ name: 'prop3', value: '' });
177+
prop.next({ name: 'prop4', value: false });
178+
179+
expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop1', 0);
180+
expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop2', null);
181+
expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop3', '');
182+
expect(renderMock.getWrapper().find(Dummy)).to.have.prop('prop4', false);
183+
});
184+
168185
it('Should only render props specified in connect', () => {
169186
const ConnectedDummy = connect(['filteredIn'])(Dummy);
170187
const cycleReactDriver = makeCycleReactDriver(<ConnectedDummy />, '#app');

0 commit comments

Comments
 (0)