diff --git a/.travis.yml b/.travis.yml index b101baa1..2f9ced30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,3 +12,4 @@ after_success: branches: only: - master + - strict diff --git a/src/Transition.js b/src/Transition.js index a12cf71f..2c65e744 100644 --- a/src/Transition.js +++ b/src/Transition.js @@ -209,7 +209,7 @@ class Transition extends React.Component { if (nextStatus !== null) { // nextStatus will always be ENTERING or EXITING. this.cancelNextCallback() - const node = ReactDOM.findDOMNode(this) + const node = this.needsNode() ? ReactDOM.findDOMNode(this) : null; if (nextStatus === ENTERING) { this.performEnter(node, mounting) @@ -313,7 +313,7 @@ class Transition extends React.Component { this.setNextCallback(handler) const doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener - if (!node || doesNotHaveTimeoutOrListener) { + if (doesNotHaveTimeoutOrListener) { setTimeout(this.nextCallback, 0) return } @@ -327,6 +327,19 @@ class Transition extends React.Component { } } + needsNode() { + return [ + 'addEndListener', + 'onEnter', + 'onEntering', + 'onEntered', + 'onExit' + ].some(callbackName => { + const callback = this.props[callbackName]; + return callback && callback.length > 0 + }) + } + render() { const status = this.state.status if (status === UNMOUNTED) {