diff --git a/src/components/connect.js b/src/components/connect.js
index a3b2630..8ae25af 100644
--- a/src/components/connect.js
+++ b/src/components/connect.js
@@ -314,7 +314,7 @@ function connect(mapPropsToRequestsToProps, defaults, options) {
return (meta) => {
return (value) => {
let refreshTimeout = null
- if (mapping.refreshInterval > 0) {
+ if (mapping.refreshInterval > 0 && !this._unmounted) {
refreshTimeout = window.setTimeout(() => {
this.refetchDatum(prop, Object.assign({}, mapping, { refreshing: true, force: true }))
}, mapping.refreshInterval)
diff --git a/test/components/connect.spec.js b/test/components/connect.spec.js
index 48d28ad..ca2c523 100644
--- a/test/components/connect.spec.js
+++ b/test/components/connect.spec.js
@@ -203,7 +203,7 @@ describe('React', () => {
const pending = TestUtils.findRenderedComponentWithType(container, Container)
const startedAt = pending.state.startedAts.testFetch
setImmediate(() => {
- expect(startedAt.getTime()).toBeLessThan(new Date().getTime())
+ expect(startedAt.getTime()).toBeLessThanOrEqualTo(new Date().getTime())
const fulfilled = TestUtils.findRenderedComponentWithType(container, Container)
expect(fulfilled.state.startedAts.testFetch).toEqual(startedAt)
done()
@@ -801,7 +801,7 @@ describe('React', () => {
})
it('should refresh when refreshInterval is provided', (done) => {
- const interval = 100000 // set sufficently far out to not happen during test
+ const interval = 100000 // set sufficiently far out to not happen during test
@connect(() => ({ testFetch: { url: `/example`, refreshInterval: interval } }))
class Container extends Component {
@@ -856,6 +856,77 @@ describe('React', () => {
})
})
+ it('should not set refreshTimeouts when component is unmounted', (done) => {
+ const interval = 100000 // set sufficiently far out to not happen during test
+
+ @connect(() => ({ testFetch: { url: `/example`, refreshInterval: interval } }))
+ class WithProps extends Component {
+ render() {
+ return