diff --git a/src/components/connectAdvanced.js b/src/components/connectAdvanced.js index 17c78e16c..f74808812 100644 --- a/src/components/connectAdvanced.js +++ b/src/components/connectAdvanced.js @@ -5,8 +5,6 @@ import { Component, PropTypes, createElement } from 'react' import Subscription from '../utils/Subscription' import storeShape from '../utils/storeShape' - -let defaultReact15CompatibilityMode = true let hotReloadingVersion = 0 export default function connectAdvanced( /* @@ -37,9 +35,6 @@ export default function connectAdvanced( // probably overridden by wrapper functions such as connect() methodName = 'connectAdvanced', - // temporary compatibility setting for React 15. See Connect constructor for details - react15CompatibilityMode = undefined, - // if defined, the name of the property passed to the wrapped element indicating the number of // calls to render. useful for watching in react devtools for unnecessary re-renders. renderCountProp = undefined, @@ -63,7 +58,6 @@ export default function connectAdvanced( const contextTypes = { [storeKey]: storeShape, [subscriptionKey]: PropTypes.instanceOf(Subscription), - react15CompatibilityMode: PropTypes.bool, } const childContextTypes = { [subscriptionKey]: PropTypes.instanceOf(Subscription) @@ -103,18 +97,7 @@ export default function connectAdvanced( this.state = {} this.renderCount = 0 this.store = this.props[storeKey] || this.context[storeKey] - - // react15CompatibilityMode controls whether the subscription system is used. This is for - // https://github.com/reactjs/react-redux/issues/525 and should be removed completely when - // react-redux's dependency on react is bumped to mimimum v16, which is expected to include - // PR https://github.com/facebook/react/pull/8204 which fixes the issue. - const compatMode = [ - react15CompatibilityMode, - props.react15CompatibilityMode, - context.react15CompatibilityMode, - defaultReact15CompatibilityMode - ].find(cm => cm !== undefined && cm !== null) - this.parentSub = compatMode ? null : props[subscriptionKey] || context[subscriptionKey] + this.parentSub = props[subscriptionKey] || context[subscriptionKey] this.setWrappedInstance = this.setWrappedInstance.bind(this) @@ -209,7 +192,6 @@ export default function connectAdvanced( initSubscription() { if (shouldHandleStateChanges) { const subscription = this.subscription = new Subscription(this.store, this.parentSub) - const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription) const dummyState = {} subscription.onStateChange = function onStateChange() { @@ -218,7 +200,12 @@ export default function connectAdvanced( if (!this.selector.shouldComponentUpdate) { subscription.notifyNestedSubs() } else { - this.setState(dummyState, notifyNestedSubs) + this.componentDidUpdate = function componentDidUpdate() { + this.componentDidUpdate = undefined + subscription.notifyNestedSubs() + } + + this.setState(dummyState) } }.bind(this) } @@ -275,9 +262,3 @@ export default function connectAdvanced( return hoistStatics(Connect, WrappedComponent) } } - -connectAdvanced.setDefaultReact15CompatibilityMode = - function setDefaultReact15CompatibilityMode(compat) { - defaultReact15CompatibilityMode = compat - } - diff --git a/src/connect/connect.js b/src/connect/connect.js index 03324b76f..e4dbf82dc 100644 --- a/src/connect/connect.js +++ b/src/connect/connect.js @@ -87,6 +87,4 @@ export function createConnect({ } } -const connect = createConnect() -connect.setDefaultReact15CompatibilityMode = connectAdvanced.setDefaultReact15CompatibilityMode -export default connect +export default createConnect() diff --git a/test/components/Provider.spec.js b/test/components/Provider.spec.js index 59ca81b89..66a88cc0d 100644 --- a/test/components/Provider.spec.js +++ b/test/components/Provider.spec.js @@ -144,7 +144,7 @@ describe('React', () => { // The state from parent props should always be consistent with the current state expect(state).toEqual(parentProps.parentState) return {} - }, null, null, { react15CompatibilityMode: false }) + }) class ChildContainer extends Component { render() { return
diff --git a/test/components/connect.spec.js b/test/components/connect.spec.js index d3785c360..d402e4cd1 100644 --- a/test/components/connect.spec.js +++ b/test/components/connect.spec.js @@ -1697,7 +1697,7 @@ describe('React', () => { // The state from parent props should always be consistent with the current state expect(state).toEqual(parentProps.parentState) return {} - }, null, null, { react15CompatibilityMode: false }) + }) class ChildContainer extends Component { render() { return