diff --git a/src/components/Promised/Promised.js b/src/components/Promised/Promised.js index 92c7b89f..2e695883 100644 --- a/src/components/Promised/Promised.js +++ b/src/components/Promised/Promised.js @@ -6,6 +6,7 @@ * {v}} renderRejected={v => v} /> */ +/* eslint-disable no-underscore-dangle */ import { Component, PropTypes } from 'react'; class Promised extends Component { @@ -17,18 +18,28 @@ class Promised extends Component { value: '', error: null, }; + this._isMounted = false; } componentDidMount() { + this._isMounted = true; this.props.promise .then(value => { - this.setState({ value }); + if (this._isMounted) { + this.setState({ value }); + } }) .catch(error => { - this.setState({ error }); + if (this._isMounted) { + this.setState({ error }); + } }); } + componentWillUnmount() { + this._isMounted = false; + } + render() { const { renderFulfilled, renderRejected } = this.props; return this.state.error ? renderRejected(this.state.error) : renderFulfilled(this.state.value);