diff --git a/src/browser/ui/dom/components/ReactDOMSelect.js b/src/browser/ui/dom/components/ReactDOMSelect.js
index cc98e368154..bca75f81f81 100644
--- a/src/browser/ui/dom/components/ReactDOMSelect.js
+++ b/src/browser/ui/dom/components/ReactDOMSelect.js
@@ -154,7 +154,9 @@ var ReactDOMSelect = ReactCompositeComponent.createClass({
var value = LinkedValueUtils.getValue(this);
var prevMultiple = !!prevProps.multiple;
var multiple = !!this.props.multiple;
- if (value != null || prevMultiple !== multiple) {
+ var children = this.props.children;
+ var prevChildren = prevProps.children;
+ if (value != null || prevMultiple !== multiple || prevChildren !== children) {
updateOptions(this, value);
}
},
diff --git a/src/browser/ui/dom/components/__tests__/ReactDOMSelect-test.js b/src/browser/ui/dom/components/__tests__/ReactDOMSelect-test.js
index c3f4781c577..c26c18319bb 100644
--- a/src/browser/ui/dom/components/__tests__/ReactDOMSelect-test.js
+++ b/src/browser/ui/dom/components/__tests__/ReactDOMSelect-test.js
@@ -145,6 +145,28 @@ describe('ReactDOMSelect', function() {
expect(node.options[2].selected).toBe(true); // twelve
});
+ it('should reset child options selected when they are changed and `defaultValue` is set', function() {
+ var stub =
+
+ stub = ReactTestUtils.renderIntoDocument(stub);
+
+ stub.setProps({
+ children: [
+ ,
+ ,
+
+ ]
+ })
+
+ var node = stub.getDOMNode()
+
+ expect(node.options[0].selected).toBe(true); // a
+ expect(node.options[1].selected).toBe(true); // b
+ expect(node.options[2].selected).toBe(false); // c
+
+ });
+
it('should allow setting `value` with `objectToString`', function() {
var objectToString = {
animal: "giraffe",