Skip to content

Commit e3f95ea

Browse files
committed
Hot fix cyclic dependency
We accidentally created an unfortunate cyclic dependency because of the auto-wrapper hack that uses ReactClass. Making it injected instead.
1 parent 50c38bb commit e3f95ea

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

src/browser/ui/ReactDefaultInjection.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ var ExecutionEnvironment = require('ExecutionEnvironment');
2020
var HTMLDOMPropertyConfig = require('HTMLDOMPropertyConfig');
2121
var MobileSafariClickEventPlugin = require('MobileSafariClickEventPlugin');
2222
var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin');
23+
var ReactClass = require('ReactClass');
2324
var ReactComponentBrowserEnvironment =
2425
require('ReactComponentBrowserEnvironment');
2526
var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');
@@ -33,6 +34,7 @@ var ReactDOMOption = require('ReactDOMOption');
3334
var ReactDOMSelect = require('ReactDOMSelect');
3435
var ReactDOMTextarea = require('ReactDOMTextarea');
3536
var ReactDOMTextComponent = require('ReactDOMTextComponent');
37+
var ReactElement = require('ReactElement');
3638
var ReactEventListener = require('ReactEventListener');
3739
var ReactInjection = require('ReactInjection');
3840
var ReactInstanceHandles = require('ReactInstanceHandles');
@@ -45,6 +47,22 @@ var SVGDOMPropertyConfig = require('SVGDOMPropertyConfig');
4547

4648
var createFullPageComponent = require('createFullPageComponent');
4749

50+
function autoGenerateWrapperClass(type) {
51+
return ReactClass.createClass({
52+
tagName: type.toUpperCase(),
53+
render: function() {
54+
return new ReactElement(
55+
type,
56+
null,
57+
null,
58+
null,
59+
null,
60+
this.props
61+
);
62+
}
63+
});
64+
}
65+
4866
function inject() {
4967
ReactInjection.EventEmitter.injectReactEventListener(
5068
ReactEventListener
@@ -78,6 +96,10 @@ function inject() {
7896
ReactDOMTextComponent
7997
);
8098

99+
ReactInjection.NativeComponent.injectAutoWrapper(
100+
autoGenerateWrapperClass
101+
);
102+
81103
// This needs to happen before createFullPageComponent() otherwise the mixin
82104
// won't be included.
83105
ReactInjection.Class.injectMixin(ReactBrowserComponentMixin);

src/core/ReactNativeComponent.js

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111

1212
'use strict';
1313

14-
var ReactClass = require('ReactClass');
15-
var ReactElement = require('ReactElement');
16-
1714
var assign = require('Object.assign');
1815
var invariant = require('invariant');
1916

17+
var autoGenerateWrapperClass = null;
2018
var genericComponentClass = null;
2119
// This registry keeps track of wrapper classes around native tags
2220
var tagToComponentClass = {};
@@ -37,25 +35,14 @@ var ReactNativeComponentInjection = {
3735
// tag. That particular tag will use this class instead of the generic one.
3836
injectComponentClasses: function(componentClasses) {
3937
assign(tagToComponentClass, componentClasses);
38+
},
39+
// Temporary hack since we expect DOM refs to behave like composites,
40+
// for this release.
41+
injectAutoWrapper: function(wrapperFactory) {
42+
autoGenerateWrapperClass = wrapperFactory;
4043
}
4144
};
4245

43-
function autoGenerateWrapperClass(type) {
44-
return ReactClass.createClass({
45-
tagName: type.toUpperCase(),
46-
render: function() {
47-
return new ReactElement(
48-
type,
49-
null,
50-
null,
51-
null,
52-
null,
53-
this.props
54-
);
55-
}
56-
});
57-
}
58-
5946
/**
6047
* Get a composite component wrapper class for a specific tag.
6148
*

src/core/ReactRef.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
'use strict';
1313

1414
var ReactOwner = require('ReactOwner');
15-
var ReactUpdates = require('ReactUpdates');
1615

1716
var ReactRef = {};
1817

0 commit comments

Comments
 (0)