From 904ee9a6787d74fcffcbf1ceece1c69a9014604d Mon Sep 17 00:00:00 2001 From: yiminghe Date: Tue, 10 May 2016 00:22:50 +0800 Subject: [PATCH] allow to ignore value attribute for option (#5362) --- .../dom/client/wrappers/ReactDOMOption.js | 52 ++++++++++++------- .../wrappers/__tests__/ReactDOMOption-test.js | 38 +++++++++----- 2 files changed, 58 insertions(+), 32 deletions(-) diff --git a/src/renderers/dom/client/wrappers/ReactDOMOption.js b/src/renderers/dom/client/wrappers/ReactDOMOption.js index 685fd7d798..9d9b9cfa37 100644 --- a/src/renderers/dom/client/wrappers/ReactDOMOption.js +++ b/src/renderers/dom/client/wrappers/ReactDOMOption.js @@ -16,6 +16,30 @@ var ReactDOMComponentTree = require('ReactDOMComponentTree'); var ReactDOMSelect = require('ReactDOMSelect'); var warning = require('warning'); +var didWarnInvalidOptionChildren = false; + +function flattenChildren(children) { + var content = ''; + + // Flatten children and warn if they aren't strings or numbers; + // invalid types are ignored. + ReactChildren.forEach(children, function(child) { + if (child == null) { + return; + } + if (typeof child === 'string' || typeof child === 'number') { + content += child; + } else if (!didWarnInvalidOptionChildren) { + didWarnInvalidOptionChildren = true; + warning( + false, + 'Only strings and numbers are supported as