我有一個問題問你。我想添加 e.preventDefault(); 在 useEffect 中,以便在狀態更改為 true 時立即呼叫它。但是有些東西不起作用,有人可以告訴我如何實作這個方法。
const [active, setActive] = useState(false);
useEffect((e) => {
if (active === true) {
e.preventDefault();
}
}, [active])
<ul
onClick={() => setBurger(false)}
<className="nav__ul">
<li><Link to='/homeWork'>Таблица</Link></li>
<li><a href="#photo__h2">Галерея</a></li>
<li><a href="#questions__head">Питання-в?дпов?дь </a></li>
<li><a href="#contacts__h3">Контакти</a></li>
<li onClick={() => setActive(true)}><a href="/" className="popup_open">Забронювати</a></li>
</ul>
uj5u.com熱心網友回復:
您無權訪問 useEffect 中的事件實體。它可以在 onClick 回呼中訪問,而不是內部效果。
const onClick = useCallback((e) => {
setActive(true)
e.preventDefault()
})
...
<li onClick={onClick} ...
始終使用包裝回呼通常也是一個好主意useCallback()——這樣你的回呼就不需要在每次渲染時重新連接——因為在每次渲染時你都會生成新的閉包。
如果你不使用 'useCallback()' 包裝你的回呼,那么在幕后 react 將替換每個渲染上的事件處理程式,類似于:
element.removeEventListener('click', oldClosure)
element.addEventListener('click', newClosure)
另外,我不確定,但看看你的代碼,我想你可能想把 onClick 放在<a>元素上<li>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476974.html
標籤:javascript 反应
