diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index 5b1eface68..b29226b739 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -215,7 +215,6 @@ ReactDOMComponent.Mixin = { return; } - assertValidProps(nextComponent.props); ReactComponent.Mixin.receiveComponent.call( this, nextComponent, @@ -236,6 +235,7 @@ ReactDOMComponent.Mixin = { 'ReactDOMComponent', 'updateComponent', function(transaction, prevProps, prevOwner) { + assertValidProps(this.props); ReactComponent.Mixin.updateComponent.call( this, transaction, diff --git a/src/browser/ui/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js index f49941b132..082c629a01 100644 --- a/src/browser/ui/__tests__/ReactDOMComponent-test.js +++ b/src/browser/ui/__tests__/ReactDOMComponent-test.js @@ -340,6 +340,41 @@ describe('ReactDOMComponent', function() { }); }); + describe('updateComponent', function() { + var React; + var container; + + beforeEach(function() { + React = require('React'); + container = document.createElement('div'); + }); + + it("should validate against multiple children props", function() { + React.renderComponent(
, container); + + expect(function() { + React.renderComponent( + , + container + ); + }).toThrow( + 'Invariant Violation: Can only set one of `children` or ' + + '`props.dangerouslySetInnerHTML`.' + ); + }); + + it("should validate against invalid styles", function() { + React.renderComponent(, container); + + expect(function() { + React.renderComponent(, container); + }).toThrow( + 'Invariant Violation: The `style` prop expects a mapping from style ' + + 'properties to values, not a string.' + ); + }); + }); + describe('unmountComponent', function() { it("should clean up listeners", function() { var React = require('React');