http://jsfiddle.net/Brj8m/

* props `value` and `defaultValue`. If `multiple` is false, the prop must be a
 * stringable. If `multiple` is true, the prop must be an array of stringables.
 *
 * If `value` is not supplied (or null/undefined), user actions that change the
 * selected option will trigger updates to the rendered options.
 *
 * If it is supplied (and not null/undefined), the rendered options will not
 * update in response to user actions. Instead, the `value` prop must change in
 * order for the rendered options to update.
 *
 * If `defaultValue` is provided, any options with the supplied values will be
 * selected.
 */
var ReactDOMSelect = {
  getNativeProps: function(inst, props) {
    return Object.assign({}, props, {
      onChange: inst._wrapperState.onChange,
      value: undefined,
    });
  },
  mountWrapper: function(inst, props) {
    if (__DEV__) {
      checkSelectPropTypes(inst, props);
      warnIfValueIsNull(props);
    }
    var value = LinkedValueUtils.getValue(props);
    inst._wrapperState = {
      pendingUpdate: false,
      initialValue: value != null ? value : props.defaultValue,
      listeners: null,