diff --git a/src/renderers/dom/client/wrappers/ReactDOMOption.js b/src/renderers/dom/client/wrappers/ReactDOMOption.js index 2513710235080..6b37232723e92 100644 --- a/src/renderers/dom/client/wrappers/ReactDOMOption.js +++ b/src/renderers/dom/client/wrappers/ReactDOMOption.js @@ -41,31 +41,38 @@ var ReactDOMOption = { // or missing (e.g., for ), we don't change props.selected var selected = null; if (selectValue != null) { + var value; + if ('value' in props) { + value = props.value + ''; + } else { + // already stringify by getNativeProps + value = props.children; + } selected = false; if (Array.isArray(selectValue)) { // multiple for (var i = 0; i < selectValue.length; i++) { - if ('' + selectValue[i] === '' + props.value) { + if ('' + selectValue[i] === value) { selected = true; break; } } } else { - selected = ('' + selectValue === '' + props.value); + selected = ('' + selectValue === value); } } inst._wrapperState = {selected: selected}; - }, - - getNativeProps: function(inst, props) { - var nativeProps = assign({selected: undefined, children: undefined}, props); // Read state only from initial mount because {}}> + + + + ; + var options = stub.props.children; + var container = document.createElement('div'); + stub = ReactDOM.render(stub, container); + var node = ReactDOM.findDOMNode(stub); + + expect(node.selectedIndex).toBe(1); + + ReactDOM.render( + , + container + ); + expect(node.selectedIndex).toEqual(2); + }); }); diff --git a/src/renderers/dom/shared/ReactDOMComponent.js b/src/renderers/dom/shared/ReactDOMComponent.js index 75f404a1bd9dc..a71a31a4e1dfa 100644 --- a/src/renderers/dom/shared/ReactDOMComponent.js +++ b/src/renderers/dom/shared/ReactDOMComponent.js @@ -585,8 +585,8 @@ ReactDOMComponent.Mixin = { transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this); break; case 'option': - ReactDOMOption.mountWrapper(this, props, nativeParent); props = ReactDOMOption.getNativeProps(this, props); + ReactDOMOption.mountWrapper(this, props, nativeParent); break; case 'select': ReactDOMSelect.mountWrapper(this, props, nativeParent);