<span> 不能作为 <select> 的 child 在反应中出现

<span> cannot appear as a child of <select> in react

我创建了一个 select 下拉组件,我在 react-redux 应用程序的 redux-form 中使用它。下拉菜单效果很好,对性能没有影响,但在浏览器中我收到以下警告。

Warning: validateDOMNesting(...): <span> cannot appear as a child of <select>.

我不确定为什么会收到此错误,因为我没有传递任何 <span> 元素。这是我用来创建 select 下拉列表的代码(选项是 object 的数组,其中包含每个选项的属性。option.text 是用户将查看的字符串值。所以它可能类似于 'Option 1' 或 'Option 2'。)

return (
  <select {...other}>
  <option /> {
    options.map((option) => {
      return <option key={option.value} value={option.value}>{option.text}</option>
    })
  } </select>
)

关于为什么我会收到此警告的任何想法,以及如何纠正此问题。我正在使用反应 0.14.3

您有一个变量 re-definition 问题。您的映射函数参数称为 "option",因此当您编写 <option> 时,react 会尝试将变量 option 引用的对象视为 react class。试试这个 -

return (
  <select {...other}>
  <option /> {
    options.map((optionNode) => {
      return <option key={optionNode.value} value={optionNode.value}>{optionNode.text}</option>
    })
  } </select>
)

您的 jsx 语法中的一些额外空格似乎创建了 span。 我已经测试了你的代码,在正确 re-indentation 之后错误消失了。

错误之前:https://jsfiddle.net/snahedis/69z2wepo/28561/

在 re-indentation 之后:https://jsfiddle.net/snahedis/69z2wepo/28564/