流动型反应

问题描述:

我已经返回的数组的函数反应<option>元素:流动型反应

function mapOptionToValues(
    element: any, 
    valueKey: ?string, 
    optionKey: ?string 
): React$Element<*> { 
    if (!valueKey && !optionKey) { 
    return (
     <option key={element}> 
     {element} 
     </option> 
    ); 
    } 

    return (
    <option value={element[valueKey]} key={element[valueKey]}> 
     {element[optionKey]} 
    </option> 
); 
} 

但我得到这个错误:

<option value={element[valueKey]} key={element[valueKey]}> 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ React element `option` 
24:  <option value={element[valueKey]} key={element[valueKey]}> 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ property `value`. Property not found in 
17:  <option key={element}> 
      ^^^^^^^^^^^^^^^^^^^^^^ props of React element `option` 

的问题是React.Element < *>试图推断组件的确切类型,包括它的道具,但你的函数的两个可能的回报有不同的道具。

如果您从代码中删除React.Element < *>类型,流程将会为您推断为更一般的JSX.Element,它将接受这两种情况。