From 7f024552207f1a67a7748bdfbd21234ff0d3b9db Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Wed, 22 Apr 2015 16:58:43 -0700 Subject: [PATCH] Relax dangerouslySetInnerHTML validation Fixes #3460. --- src/browser/ui/ReactDOMComponent.js | 3 ++- src/browser/ui/__tests__/ReactDOMComponent-test.js | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index fa262f7edd..2b1f592e13 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -72,7 +72,8 @@ function assertValidProps(component, props) { 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.' ); invariant( - props.dangerouslySetInnerHTML.__html != null, + typeof props.dangerouslySetInnerHTML === 'object' && + '__html' in props.dangerouslySetInnerHTML, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://fb.me/react-invariant-dangerously-set-inner-html ' + 'for more information.' diff --git a/src/browser/ui/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js index abbc974aac..f69f369f55 100644 --- a/src/browser/ui/__tests__/ReactDOMComponent-test.js +++ b/src/browser/ui/__tests__/ReactDOMComponent-test.js @@ -443,6 +443,12 @@ describe('ReactDOMComponent', function() { ); }); + it('should allow {__html: null}', function() { + expect(function() { + mountComponent({dangerouslySetInnerHTML: {__html: null} }); + }).not.toThrow(); + }); + it("should warn about contentEditable and children", function() { spyOn(console, 'error'); mountComponent({contentEditable: true, children: ''});