@samitouri / QOS-React-2 / commits / e8af100849

Removed getDOMNode from react classes.

jim committed Jan 11, 2016 at 23:32 UTC e8af100849932387643977587ccd7a4c1a981470
13 files changed +11 -148
src/isomorphic/classic/class/__tests__/ReactClass-test.js
-19
@@ -362,23 +362,4 @@ describe('ReactClass-spec', function() {
362 );
363 });
364
365 - it('warns when calling getDOMNode', function() {
366 - var MyComponent = React.createClass({
367 - render: function() {
368 - return <div />;
369 - },
370 - });
371 -
372 - var container = document.createElement('div');
373 - var instance = ReactDOM.render(<MyComponent />, container);
374 -
375 - instance.getDOMNode();
376 -
377 - expect(console.error.calls.length).toBe(1);
378 - expect(console.error.argsForCall[0][0]).toContain(
379 - 'MyComponent.getDOMNode(...) is deprecated. Please use ' +
380 - 'ReactDOM.findDOMNode(instance) instead.'
381 - );
382 - });
383 -
365 });
src/isomorphic/modern/class/ReactComponent.js
-4
@@ -106,10 +106,6 @@ ReactComponent.prototype.forceUpdate = function(callback) {
106 */
107 if (__DEV__) {
108 var deprecatedAPIs = {
109 - getDOMNode: [
110 - 'getDOMNode',
111 - 'Use ReactDOM.findDOMNode(component) instead.',
112 - ],
109 isMounted: [
110 'isMounted',
111 'Instead, make sure to clean up subscriptions and pending requests in ' +
src/isomorphic/modern/class/__tests__/ReactCoffeeScriptClass-test.coffee
+2 -6
@@ -345,19 +345,15 @@ describe 'ReactCoffeeScriptClass', ->
345 spyOn console, 'error'
346 instance =
347 test Inner(name: 'foo'), 'DIV', 'foo'
348 - expect(-> instance.getDOMNode()).toThrow()
348 expect(-> instance.replaceState {}).toThrow()
349 expect(-> instance.isMounted()).toThrow()
350 expect(-> instance.setProps name: 'bar').toThrow()
351 expect(-> instance.replaceProps name: 'bar').toThrow()
353 - expect(console.error.calls.length).toBe 3
352 + expect(console.error.calls.length).toBe 2
353 expect(console.error.argsForCall[0][0]).toContain(
355 - 'getDOMNode(...) is deprecated in plain JavaScript React classes'
356 - )
357 - expect(console.error.argsForCall[1][0]).toContain(
354 'replaceState(...) is deprecated in plain JavaScript React classes'
355 )
360 - expect(console.error.argsForCall[2][0]).toContain(
356 + expect(console.error.argsForCall[1][0]).toContain(
357 'isMounted(...) is deprecated in plain JavaScript React classes'
358 )
359
src/isomorphic/modern/class/__tests__/ReactES6Class-test.js
+2 -7
@@ -402,20 +402,15 @@ describe('ReactES6Class', function() {
402 it('should throw AND warn when trying to access classic APIs', function() {
403 spyOn(console, 'error');
404 var instance = test(<Inner name="foo" />, 'DIV', 'foo');
405 - expect(() => instance.getDOMNode()).toThrow();
405 expect(() => instance.replaceState({})).toThrow();
406 expect(() => instance.isMounted()).toThrow();
407 expect(() => instance.setProps({name: 'bar'})).toThrow();
408 expect(() => instance.replaceProps({name: 'bar'})).toThrow();
410 - expect(console.error.calls.length).toBe(3);
409 + expect(console.error.calls.length).toBe(2);
410 expect(console.error.argsForCall[0][0]).toContain(
412 - 'getDOMNode(...) is deprecated in plain JavaScript React classes. ' +
413 - 'Use ReactDOM.findDOMNode(component) instead.'
414 - );
415 - expect(console.error.argsForCall[1][0]).toContain(
411 'replaceState(...) is deprecated in plain JavaScript React classes'
412 );
418 - expect(console.error.argsForCall[2][0]).toContain(
413 + expect(console.error.argsForCall[1][0]).toContain(
414 'isMounted(...) is deprecated in plain JavaScript React classes'
415 );
416 });
src/isomorphic/modern/class/__tests__/ReactTypeScriptClass-test.ts
+2 -6
@@ -486,19 +486,15 @@ describe('ReactTypeScriptClass', function() {
486 React.createElement(Inner, {name: 'foo'}),
487 'DIV','foo'
488 );
489 - expect(() => instance.getDOMNode()).toThrow();
489 expect(() => instance.replaceState({})).toThrow();
490 expect(() => instance.isMounted()).toThrow();
491 expect(() => instance.setProps({ name: 'bar' })).toThrow();
492 expect(() => instance.replaceProps({ name: 'bar' })).toThrow();
494 - expect((<any>console.error).argsForCall.length).toBe(3);
493 + expect((<any>console.error).argsForCall.length).toBe(2);
494 expect((<any>console.error).argsForCall[0][0]).toContain(
496 - 'getDOMNode(...) is deprecated in plain JavaScript React classes'
497 - );
498 - expect((<any>console.error).argsForCall[1][0]).toContain(
495 'replaceState(...) is deprecated in plain JavaScript React classes'
496 );
501 - expect((<any>console.error).argsForCall[2][0]).toContain(
497 + expect((<any>console.error).argsForCall[1][0]).toContain(
498 'isMounted(...) is deprecated in plain JavaScript React classes'
499 );
500 });
src/renderers/dom/client/findDOMNode.js
+1 -1
@@ -31,7 +31,7 @@ function findDOMNode(componentOrElement) {
31 if (owner !== null) {
32 warning(
33 owner._warnedAboutRefsInRender,
34 - '%s is accessing getDOMNode or findDOMNode inside its render(). ' +
34 + '%s is accessing findDOMNode inside its render(). ' +
35 'render() should be a pure function of props and state. It should ' +
36 'never access something that requires stale data from the previous ' +
37 'render, such as refs. Move this logic to componentDidMount and ' +
src/renderers/dom/shared/ReactBrowserComponentMixin.js deleted
-41
@@ -1,41 +0,0 @@
1 -/**
2 - * Copyright 2013-present, Facebook, Inc.
3 - * All rights reserved.
4 - *
5 - * This source code is licensed under the BSD-style license found in the
6 - * LICENSE file in the root directory of this source tree. An additional grant
7 - * of patent rights can be found in the PATENTS file in the same directory.
8 - *
9 - * @providesModule ReactBrowserComponentMixin
10 - */
11 -
12 -'use strict';
13 -
14 -var ReactInstanceMap = require('ReactInstanceMap');
15 -
16 -var findDOMNode = require('findDOMNode');
17 -var warning = require('warning');
18 -
19 -var didWarnKey = '_getDOMNodeDidWarn';
20 -
21 -var ReactBrowserComponentMixin = {
22 - /**
23 - * Returns the DOM node rendered by this component.
24 - *
25 - * @return {DOMElement} The root node of this component.
26 - * @final
27 - * @protected
28 - */
29 - getDOMNode: function() {
30 - warning(
31 - this.constructor[didWarnKey],
32 - '%s.getDOMNode(...) is deprecated. Please use ' +
33 - 'ReactDOM.findDOMNode(instance) instead.',
34 - ReactInstanceMap.get(this).getName() || this.tagName || 'Unknown'
35 - );
36 - this.constructor[didWarnKey] = true;
37 - return findDOMNode(this);
38 - },
39 -};
40 -
41 -module.exports = ReactBrowserComponentMixin;
src/renderers/dom/shared/ReactDefaultInjection.js
-3
@@ -17,7 +17,6 @@ var DefaultEventPluginOrder = require('DefaultEventPluginOrder');
17 var EnterLeaveEventPlugin = require('EnterLeaveEventPlugin');
18 var ExecutionEnvironment = require('ExecutionEnvironment');
19 var HTMLDOMPropertyConfig = require('HTMLDOMPropertyConfig');
20 -var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin');
20 var ReactComponentBrowserEnvironment =
21 require('ReactComponentBrowserEnvironment');
22 var ReactDOMComponent = require('ReactDOMComponent');
@@ -75,8 +74,6 @@ function inject() {
74 ReactDOMTextComponent
75 );
76
78 - ReactInjection.Class.injectMixin(ReactBrowserComponentMixin);
79 -
77 ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
78 ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
79
src/renderers/shared/reconciler/__tests__/ReactComponent-test.js
-20
@@ -265,26 +265,6 @@ describe('ReactComponent', function() {
265 expect(callback.mock.calls.length).toBe(3);
266 });
267
268 - it('warns when calling getDOMNode', function() {
269 - spyOn(console, 'error');
270 -
271 - var Potato = React.createClass({
272 - render: function() {
273 - return <div />;
274 - },
275 - });
276 - var container = document.createElement('div');
277 - var instance = ReactDOM.render(<Potato />, container);
278 -
279 - instance.getDOMNode();
280 -
281 - expect(console.error.calls.length).toBe(1);
282 - expect(console.error.argsForCall[0][0]).toContain(
283 - 'Potato.getDOMNode(...) is deprecated. Please use ' +
284 - 'ReactDOM.findDOMNode(instance) instead.'
285 - );
286 - });
287 -
268 it('throws usefully when rendering badly-typed elements', function() {
269 spyOn(console, 'error');
270
src/renderers/shared/reconciler/__tests__/ReactComponentLifeCycle-test.js
+1 -1
@@ -322,7 +322,7 @@ describe('ReactComponentLifeCycle', function() {
322 ReactTestUtils.renderIntoDocument(<Component />);
323 expect(console.error.argsForCall.length).toBe(1);
324 expect(console.error.argsForCall[0][0]).toContain(
325 - 'Component is accessing getDOMNode or findDOMNode inside its render()'
325 + 'Component is accessing findDOMNode inside its render()'
326 );
327 });
328
src/renderers/shared/reconciler/__tests__/ReactCompositeComponent-test.js
+2 -12
@@ -1073,21 +1073,11 @@ describe('ReactCompositeComponent', function() {
1073 expect(ReactDOM.findDOMNode(comp.refs.static0).textContent).toBe('A');
1074 expect(ReactDOM.findDOMNode(comp.refs.static1).textContent).toBe('B');
1075
1076 - expect(ReactDOM.findDOMNode(comp.refs.static0))
1077 - .toBe(comp.refs.static0.getDOMNode());
1078 - expect(ReactDOM.findDOMNode(comp.refs.static1))
1079 - .toBe(comp.refs.static1.getDOMNode());
1080 -
1076 // When flipping the order, the refs should update even though the actual
1077 // contents do not
1078 ReactDOM.render(<Component flipped={true} />, container);
1079 expect(ReactDOM.findDOMNode(comp.refs.static0).textContent).toBe('B');
1080 expect(ReactDOM.findDOMNode(comp.refs.static1).textContent).toBe('A');
1086 -
1087 - expect(ReactDOM.findDOMNode(comp.refs.static0))
1088 - .toBe(comp.refs.static0.getDOMNode());
1089 - expect(ReactDOM.findDOMNode(comp.refs.static1))
1090 - .toBe(comp.refs.static1.getDOMNode());
1081 });
1082
1083 it('should allow access to findDOMNode in componentWillUnmount', function() {
@@ -1096,11 +1086,11 @@ describe('ReactCompositeComponent', function() {
1086 var Component = React.createClass({
1087 componentDidMount: function() {
1088 a = ReactDOM.findDOMNode(this);
1099 - expect(a).toBe(this.getDOMNode());
1089 + expect(a).not.toBe(null);
1090 },
1091 componentWillUnmount: function() {
1092 b = ReactDOM.findDOMNode(this);
1103 - expect(b).toBe(this.getDOMNode());
1093 + expect(b).not.toBe(null);
1094 },
1095 render: function() {
1096 return <div />;
src/renderers/shared/reconciler/__tests__/ReactEmptyComponent-test.js
+1 -1
@@ -158,7 +158,7 @@ describe('ReactEmptyComponent', function() {
158 }
159 );
160
161 - it('should have getDOMNode return null when multiple layers of composite ' +
161 + it('should have findDOMNode return null when multiple layers of composite ' +
162 'components render to the same null placeholder',
163 () => {
164 var GrandChild = React.createClass({
src/test/__tests__/ReactTestUtils-test.js
-27
@@ -352,33 +352,6 @@ describe('ReactTestUtils', function() {
352 expect(log).toEqual(['orangepurple', 'orange', 'purple']);
353 });
354
355 - it('does not warn for getDOMNode on ES6 classes', function() {
356 - var Foo = React.createClass({
357 - render: function() {
358 - return <div />;
359 - },
360 - });
361 -
362 - class Bar extends React.Component {
363 - render() {
364 - return <div />;
365 - }
366 - }
367 -
368 - spyOn(console, 'error');
369 -
370 - var foo = ReactTestUtils.renderIntoDocument(<Foo />);
371 - expect(ReactTestUtils.isDOMComponent(foo)).toBe(false);
372 -
373 - var bar = ReactTestUtils.renderIntoDocument(<Bar />);
374 - expect(ReactTestUtils.isDOMComponent(bar)).toBe(false);
375 -
376 - var div = ReactTestUtils.renderIntoDocument(<div />);
377 - expect(ReactTestUtils.isDOMComponent(div)).toBe(true);
378 -
379 - expect(console.error.calls.length).toBe(0);
380 - });
381 -
355 it('should support injected wrapper components as DOM components', function() {
356 var getTestDocument = require('getTestDocument');
357