2 回答

TA貢獻1811條經驗 獲得超5個贊
簡短的回答:這是由于他們的打字不當造成的。繼續施放吧。
長答案:發生這種情況的原因是因為如果您單擊<svg />
按鈕內部(例如),它將event.target
指向 SVG,這不能保證是按鈕(顯然)。只有事件currentTarget
指向處理程序所在的元素。因此,做出 React 類型的人決定將事件定義currentTarget
為我們示例中的內容button
,但除了事件是一個 EventTarget 之外,不對事件做出任何保證。target
因此,你不得不施放它。

TA貢獻1784條經驗 獲得超9個贊
我剛剛開始使用 Typescript。我有一個類似的問題,我的解決方案是,我知道該事件總是由 DomElement 觸發。
這就是我通知 Typescript 的方式:
function bodyClickHandler(ev: MouseEvent) {
if(containerRef.current && containerRef.current.contains(ev.target as HTMLElement)) return;
setOpen(false);
}
如果您喜歡將其分開:
function bodyClickHandler(ev: MouseEvent) {
const target = ev.target as HTMLElement;
if(containerRef.current && containerRef.current.contains(target)) return;
setOpen(false);
}
- 2 回答
- 0 關注
- 190 瀏覽
添加回答
舉報