2 回答

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

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個贊
我剛剛開始使用 Typescript。我有一個類似的問題,我的解決方案是,我知道該事件總是由 DomElement 觸發(fā)。
這就是我通知 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 關(guān)注
- 207 瀏覽
添加回答
舉報