Please make use of disabled property.
<button className='boxes' type='button' onClick={goList} disabled={()=> checkDisabled(ID, PW)}> LogIn </button>
The checkDisabled function must return true or false based on your requirements.
const checkDisabled = (id, password) => { // condition here if(id.includes('@') && password.length >= 7) { return false; } return true; }
Then finally the component code must look like this. Please note the changes I have made related to how the state variables are connected with the input component.
import { useState } from "react"; const Login = () => { const [ID, setID] = useState(""); const [PW, setPW] = useState(""); function handleIdInput(event) { setID(event.target.value); console.log(ID); } function handlePWInput(event) { setPW(event.target.value); console.log(PW); } const checkDisabled = (id, password) => { // condition here if (id.includes("@") && password.length >= 7) { return false; } return true; }; return ( <form> <div> <input type="text" id="ID" className="boxes" value={ID} onChange={(e) => handleIdInput(e)} /> </div> <div> <input type="password" id="password" className="boxes" value={PW} onChange={(e) => handlePWInput(e)} /> </div> <button className="boxes" type="button" onClick={goList} disabled={() => checkDisabled(ID, PW)} > LogIn </button> </form> ); }; export default Login;
Reference for useState hook.