單擊按鈕時,我希望模態顯示。Modal 組件添加了一個 eventListener,因此當您在模態框外單擊時它會關閉。
在反應 18 中,單擊事件觸發是因為在呈現模態之前發生的按鈕單擊?
如果我更改為 react 17 這不會發生。
示例:https ://codesandbox.io/s/festive-mopsa-lgke69?file=/src/App.js 當您單擊按鈕時,顯示狀態設定為 true。然后Modal組件直接渲染并呼叫close函式。
uj5u.com熱心網友回復:
您可以呼叫event.stopPropagation以防止多個單擊處理程式捕獲相同的單擊事件。
onClick={(e) => {
e.stopPropagation();
setShow(true);
}}
我不知道為什么這在 React 17 和 18 之間會有所不同。React 使用它自己的“合成事件”,并且可能在兩個版本之間發生的事件傳播/冒泡方式發生了變化。
它可能與 React 18 中所謂的“自動批處理”有關。 https://github.com/reactwg/react-18/discussions/21
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478614.html
