我有以下组件:
import { identity } from 'lodash';
export const Input = ({
onChange = identity
//etc.
}: {
onChange: Event<HTMLInputElement>,
}) => <Input onChange={onChange} />
但是当我运行flow时,我得到了这个错误:
onChange = identity,
^^^^^^^^^^^^^^^^^^^ default value. Expected polymorphic type instead of
onChange = identity,
^^^^^^^^ class type: Event
我不知道在哪里可以找到Event
的定义。
如果我看看facebook的dom类型:
我可以在这里看到Event,它有一个EventTarget
类型的target property。
但看看EventTarget
definition,我看不到任何价值的定义。
我不知道如何定义合成事件,让它有一个HtmlInputElement类型的目标。
发布于 2018-06-25 01:34:25
正如TLadd所说,SyntheticInputEvent
就是您想要的参数。但是,它需要一个类型参数,所以您需要将其设置为SyntheticInputEvent<HTMLInputElement>
。
发布于 2017-07-18 01:07:14
我会看一看flow文档:
你会想要这样的东西:
class MyComponent extends React.Component {
onChange(event: Event & { currentTarget: HTMLInputElement }) {
// ...
}
}
发布于 2017-07-17 07:36:46
Flow内置了合成事件的定义。在本例中,您需要的是SyntheticInputEvent (https://github.com/facebook/flow/blob/v0.49.1/lib/react.js#L310)
所以onChange的类型应该是
{
onChange: (SyntheticInputEvent) => mixed,
}
一个接受SyntheticInputEvent并返回混合时间的函数,这基本上意味着您不关心该函数返回什么(如果有的话)。
https://stackoverflow.com/questions/45132013
复制相似问题