【发布时间】:2021-05-15 16:27:04
【问题描述】:
我想做 getElementById 来赋予 css 效果并点击滑动功能。 如何在反应中使用 DOM?提前谢谢你。
function Auth() {
//this part needs to be fixed
const signUpButton = document.getElementById('signUp');
const signInButton = document.getElementById('signIn');
const container = document.getElementById('body');
signUpButton.addEventListener('click', () =>
container.classList.add('right-panel-active'));
signInButton.addEventListener('click', () =>
container.classList.remove('right-panel-active'));
这些类名可以帮助你更好地理解我的代码。
return (
<div className ="auth">
<div className="body" id="body">
<SignUp className="test" />
<SignIn className="test" />
<div className="slide__body">
<div className="slides">
<div className="slide SignUp__left">
<p>Already have an account?</p>
<button className="slide__btn" id='signUp' > Sign In </button>
</div>
<div className="slide SignIn__right">
<p>Not a Member?</p>
<button className="slide__btn" id='signIn' > Sign Up </button>
</div>
</div>
</div>
</div>
</div>
)
}
【问题讨论】:
-
在反应中你应该使用参考,你可能想看看这个reactjs.org/docs/hooks-reference.html#useref
-
是的,当你需要在 React 中直接访问 DOM 时,你应该使用 refs。并且有很多有效的用例。但是你应该总是三思而后行,看看是否有更“类似 React”的方式来做你想做的事。在这里,您似乎只想添加事件侦听器,您应该在 React 中通过将
onclick(等)属性添加到 JSX 输出来完成。 (而不是强制添加类,这些事件处理程序应该切换某些状态,并且您呈现的输出应该根据该状态添加或不添加相关类。) -
... 或者换句话说,您需要触发 onload 函数:
window.onload= Auth;否则您的 addEventListeners 将永远不会被添加...
标签: javascript css reactjs dom