gpt4 book ai didi

reactjs - React 15 + Typescript : React. FormEvent 类型不完整?

转载 作者:行者123 更新时间:2023-12-03 13:47:57 26 4
gpt4 key购买 nike

textarea 表单的 onChange 属性需要 React.EventHandler<React.FormEvent<HTMLTextAreaElement>> .

深入兔子洞,我们发现

interface EventHandler<E extends SyntheticEvent<any>> {
(event: E): void;
}

type FormEventHandler<T> = EventHandler<FormEvent<T>>;

/* ... */

interface FormEvent<T> extends SyntheticEvent<T> {
}

换句话说,onChange 只是需要一个接受 FormEvent 并返回 void 的函数,而 FormEvent 目前与 SyntheticEvent 相同。

问题是 SyntheticEvent<T>.target: EventTarget ,和EventTarget未定义value .

我注意到还有 currentTarget: EventTarget & T ,其中 T 为 HTMLTextInputArea ,这似乎已经定义了值。但是form handling pages show event.target被人看,而不是event.currentTarget 。有什么不同?我应该遵循打字还是文档?

编辑:我回答了我自己的问题。 currentTarget是我将处理程序绑定(bind)到的元素,并且 target是接收引发该事件的操作的元素。我想我总是想从 currentTarget 读取值,所以在这种情况下,我认为打字引导我正确,而文档引导我错误。

最佳答案

您的编辑是正确的。

这是一个简单的问题,但不幸的是,臭名昭著的 currentTarget/target 难题导致了一场有趣的 React 类型编辑战。React 文档使用 target 的原因是因为它对子元素没有影响,并且它们重视简单性,如下所示:

https://github.com/facebook/react/pull/9279

如果您需要更全面的引用来使事情焕然一新,您可以阅读我对此主题的干预之一:

https://github.com/DefinitelyTyped/DefinitelyTyped/issues/11508#issuecomment-256045682

关于reactjs - React 15 + Typescript : React. FormEvent<T> 类型不完整?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40857113/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com