Reactjs + Flow:onChange引发错误

时间:2018-04-26 23:06:33

标签: reactjs

我有以下无状态组件,我使用Flow进行类型检查:

items

当我触发onChange事件时,我收到以下错误:

//@flow

import React from "react";

export const Picker = (
  { options }: { options: Object },
  { onChange }: { onChange: (e: SyntheticEvent<any>) => Function }
) => {
  return (
    <span>
      <select onChange={e => onChange(e)}>
        <option defaultValue=" ">Pick Year</option>
        {options.map(year => (
          <option value={year} key={year}>
            {year}
          </option>
        ))}
      </select>
    </span>
  );
};

我做错了什么?仅供参考,如果我删除了类型检查,只需使用vanilla reactjs onChange即可。

1 个答案:

答案 0 :(得分:0)

无状态React组件接受单个参数,“props”。但是你的函数定义需要两个参数,onChange是作为第二个参数传递的值的属性。由于React永远不会传递第二个参数,因此永远不会设置它。

optionsonChange都应该是第一个参数的属性,这意味着函数应该被定义为

export const Picker = (
  { options, onChange }: { options: Object, onChange: (e: SyntheticEvent<any>) => Function }
) => {
  ...
};