我有一个返回反应<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<*> 试图推断组件的确切类型,包括它的 Props,但函数的两个可能的返回具有不同的 Props。
如果您从代码中删除 React.Element<*> 类型,Flow 会为您推断出它作为更通用的JSX.Element
,这将接受这两种情况。