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