Skip to content

Commit 98b052a

Browse files
committed
Merge pull request #16 from timbofield/master
Remove event listeners on unmount
2 parents fc88598 + d7a8d9c commit 98b052a

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ function factory(options) {
3535
} else {
3636
spark(element, () => element, this.props.timeline, this.props);
3737
}
38+
},
39+
40+
componentWillUnmount() {
41+
spark.cleanup();
3842
}
43+
3944
});
4045

4146
const SparkScroll = sparkScrollFactory('div');

src/spark.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,18 @@ function sparkFactory({animator, formulas, actionProps, setup, invalidateAutomat
302302
window.addEventListener('resize', onInvalidate, false);
303303
eventEmitter.on('invalidate', onInvalidate);
304304

305+
eventEmitter.once('cleanup', function() {
306+
window.removeEventListener('scroll', onScroll);
307+
window.removeEventListener('resize', onInvalidate);
308+
eventEmitter.removeListener('invalidate', onInvalidate)
309+
});
310+
305311
// delay parse a frame to allow proxy to render
306312
animationFrame.request(parseData.bind(null,timeline));
307313

308314
};
315+
316+
spark.cleanup = () => eventEmitter.emit('cleanup');
309317

310318
spark.invalidate = () => eventEmitter.emit('invalidate');
311319

@@ -400,4 +408,4 @@ const _sparkActionProps = {
400408
}
401409
};
402410

403-
module.exports = sparkFactory;
411+
module.exports = sparkFactory;

0 commit comments

Comments
 (0)