From 989e6b618e8084a82dc194bfe4d888ab6a52cc4f Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 19 Aug 2014 23:16:33 -0700 Subject: [PATCH] Drop usage of plain functions to create descriptors Replace plain function calls to legacy factories with createFactory or createElement. For ReactDOMComponents the type should be replaced with strings. Because we don't have easy access to ReactLegacyDescriptor from within React, we need to use the .type property to extract the real class. This will go away later and is covered by unit tests. --- src/addons/transitions/ReactCSSTransitionGroup.js | 8 ++++++-- src/addons/transitions/ReactTransitionGroup.js | 6 +++++- src/browser/__tests__/ReactDOM-test.js | 5 +++-- src/browser/ui/dom/components/ReactDOMButton.js | 5 +++-- src/browser/ui/dom/components/ReactDOMForm.js | 5 +++-- src/browser/ui/dom/components/ReactDOMImg.js | 5 +++-- src/browser/ui/dom/components/ReactDOMInput.js | 5 +++-- src/browser/ui/dom/components/ReactDOMOption.js | 5 +++-- src/browser/ui/dom/components/ReactDOMSelect.js | 5 +++-- src/browser/ui/dom/components/ReactDOMTextarea.js | 5 +++-- .../ui/dom/components/createFullPageComponent.js | 5 ++++- src/core/ReactEmptyComponent.js | 4 +++- src/core/__tests__/ReactCompositeComponent-test.js | 7 ++++--- src/core/__tests__/ReactMultiChildReconcile-test.js | 10 ++++++---- src/core/__tests__/ReactMultiChildText-test.js | 2 +- src/core/__tests__/ReactTextComponent-test.js | 2 +- src/test/ReactTestUtils.js | 6 +++++- 17 files changed, 59 insertions(+), 31 deletions(-) diff --git a/src/addons/transitions/ReactCSSTransitionGroup.js b/src/addons/transitions/ReactCSSTransitionGroup.js index 2a3301fd7a..c54d9a7aeb 100644 --- a/src/addons/transitions/ReactCSSTransitionGroup.js +++ b/src/addons/transitions/ReactCSSTransitionGroup.js @@ -21,8 +21,12 @@ var React = require('React'); -var ReactTransitionGroup = require('ReactTransitionGroup'); -var ReactCSSTransitionGroupChild = require('ReactCSSTransitionGroupChild'); +var ReactTransitionGroup = React.createFactory( + require('ReactTransitionGroup') +); +var ReactCSSTransitionGroupChild = React.createFactory( + require('ReactCSSTransitionGroupChild') +); var merge = require('merge'); diff --git a/src/addons/transitions/ReactTransitionGroup.js b/src/addons/transitions/ReactTransitionGroup.js index 9f4276c31d..6a9e1888c9 100644 --- a/src/addons/transitions/ReactTransitionGroup.js +++ b/src/addons/transitions/ReactTransitionGroup.js @@ -183,7 +183,11 @@ var ReactTransitionGroup = React.createClass({ ); } } - return this.props.component(this.props, childrenToRender); + return React.createElement( + this.props.component, + this.props, + childrenToRender + ); } }); diff --git a/src/browser/__tests__/ReactDOM-test.js b/src/browser/__tests__/ReactDOM-test.js index da0fadb6e2..aae27e976e 100644 --- a/src/browser/__tests__/ReactDOM-test.js +++ b/src/browser/__tests__/ReactDOM-test.js @@ -25,6 +25,7 @@ var React = require('React'); var ReactDOM = require('ReactDOM'); var ReactMount = require('ReactMount'); var ReactTestUtils = require('ReactTestUtils'); +var div = React.createFactory(ReactDOM.div); // TODO: use string describe('ReactDOM', function() { // TODO: uncomment this test once we can run in phantom, which @@ -58,7 +59,7 @@ describe('ReactDOM', function() { it("should allow children to be passed as an argument", function() { var argDiv = ReactTestUtils.renderIntoDocument( - ReactDOM.div(null, 'child') + div(null, 'child') ); var argNode = ReactMount.getNode(argDiv._rootNodeID); expect(argNode.innerHTML).toBe('child'); @@ -66,7 +67,7 @@ describe('ReactDOM', function() { it("should overwrite props.children with children argument", function() { var conflictDiv = ReactTestUtils.renderIntoDocument( - ReactDOM.div({children: 'fakechild'}, 'child') + div({children: 'fakechild'}, 'child') ); var conflictNode = ReactMount.getNode(conflictDiv._rootNodeID); expect(conflictNode.innerHTML).toBe('child'); diff --git a/src/browser/ui/dom/components/ReactDOMButton.js b/src/browser/ui/dom/components/ReactDOMButton.js index 68734854ff..d9c07a78db 100644 --- a/src/browser/ui/dom/components/ReactDOMButton.js +++ b/src/browser/ui/dom/components/ReactDOMButton.js @@ -21,12 +21,13 @@ var AutoFocusMixin = require('AutoFocusMixin'); var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin'); var ReactCompositeComponent = require('ReactCompositeComponent'); +var ReactDescriptor = require('ReactDescriptor'); var ReactDOM = require('ReactDOM'); var keyMirror = require('keyMirror'); -// Store a reference to the