Hot fix cyclic dependency
We accidentally created an unfortunate cyclic dependency because of the auto-wrapper hack that uses ReactClass. Making it injected instead.
Sebastian Markbage committed
Feb 2, 2015 at 23:55 UTC
e3f95ea2936f06bb5986920c7f896f5c74d1a015
3 files changed
+28
-20
src/browser/ui/ReactDefaultInjection.js
+22
@@ -20,6 +20,7 @@ var ExecutionEnvironment = require('ExecutionEnvironment');
20
var HTMLDOMPropertyConfig = require('HTMLDOMPropertyConfig');
21
var MobileSafariClickEventPlugin = require('MobileSafariClickEventPlugin');
22
var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin');
23
+var ReactClass = require('ReactClass');
24
var ReactComponentBrowserEnvironment =
25
require('ReactComponentBrowserEnvironment');
26
var ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');
@@ -33,6 +34,7 @@ var ReactDOMOption = require('ReactDOMOption');
34
var ReactDOMSelect = require('ReactDOMSelect');
35
var ReactDOMTextarea = require('ReactDOMTextarea');
36
var ReactDOMTextComponent = require('ReactDOMTextComponent');
37
+var ReactElement = require('ReactElement');
38
var ReactEventListener = require('ReactEventListener');
39
var ReactInjection = require('ReactInjection');
40
var ReactInstanceHandles = require('ReactInstanceHandles');
@@ -45,6 +47,22 @@ var SVGDOMPropertyConfig = require('SVGDOMPropertyConfig');
47
48
var createFullPageComponent = require('createFullPageComponent');
49
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
+
66
function inject() {
67
ReactInjection.EventEmitter.injectReactEventListener(
68
ReactEventListener
@@ -78,6 +96,10 @@ function inject() {
96
ReactDOMTextComponent
97
);
98
99
+ ReactInjection.NativeComponent.injectAutoWrapper(
100
+ autoGenerateWrapperClass
101
+ );
102
+
103
// This needs to happen before createFullPageComponent() otherwise the mixin
104
// won't be included.
105
ReactInjection.Class.injectMixin(ReactBrowserComponentMixin);
src/core/ReactNativeComponent.js
+6
-19
@@ -11,12 +11,10 @@
11
12
'use strict';
13
14
-var ReactClass = require('ReactClass');
15
-var ReactElement = require('ReactElement');
16
-
14
var assign = require('Object.assign');
15
var invariant = require('invariant');
16
17
+var autoGenerateWrapperClass = null;
18
var genericComponentClass = null;
19
// This registry keeps track of wrapper classes around native tags
20
var tagToComponentClass = {};
@@ -37,25 +35,14 @@ var ReactNativeComponentInjection = {
35
// tag. That particular tag will use this class instead of the generic one.
36
injectComponentClasses: function(componentClasses) {
37
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;
43
}
44
};
45
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
-
46
/**
47
* Get a composite component wrapper class for a specific tag.
48
*
src/core/ReactRef.js
-1
@@ -12,7 +12,6 @@
12
'use strict';
13
14
var ReactOwner = require('ReactOwner');
15
-var ReactUpdates = require('ReactUpdates');
15
16
var ReactRef = {};
17