diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index fc3a1e447b7..9aa97a11eba 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -442,6 +442,8 @@ ReactDOMComponent.Mixin = { if (propKey === STYLE) { if (nextProp) { nextProp = this._previousStyleCopy = assign({}, nextProp); + } else { + this._previousStyleCopy = null; } if (lastProp) { // Unset styles on `lastProp` but not on `nextProp`. diff --git a/src/browser/ui/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js index 8574963cb45..49a0449f039 100644 --- a/src/browser/ui/__tests__/ReactDOMComponent-test.js +++ b/src/browser/ui/__tests__/ReactDOMComponent-test.js @@ -109,6 +109,27 @@ describe('ReactDOMComponent', function() { expect(stubStyle.display).toEqual('block'); }); + it("should update styles if updated to null multiple times", function() { + var styles = null; + var container = document.createElement('div'); + React.render(
, container); + + styles = {display: 'block'}; + var stubStyle = container.firstChild.style; + + React.render(
, container); + expect(stubStyle.display).toEqual('block'); + + React.render(
, container); + expect(stubStyle.display).toEqual(''); + + React.render(
, container); + expect(stubStyle.display).toEqual('block'); + + React.render(
, container); + expect(stubStyle.display).toEqual(''); + }); + it("should remove attributes", function() { var container = document.createElement('div'); React.render(, container);