【发布时间】:2021-07-01 01:29:27
【问题描述】:
我正在尝试实施一个复选框以完全同意会员注册。
const [agree1, setAgree1] = useState(false); //agree1
const [agree2, setAgree2] = useState(false); //agree2
const [agree3, setAgree3] = useState(false); //agree3
const [total, settotal] = useState(false); // all agree
const buttonState = useCallback(() => {
if((agree1===true)&&(agree2===true)&&(agree3===true)){
settotal(true);
setDisabled('');
}
else {
setDisabled('disabled');
}
},[agree1,agree2,agree3,total]);
const totalchange = () => {
if(total ===true) { //전체동의가 true라면 다시 클릭 했을때 전부 unchecked
settotal(!total);
setAgree1(!agree1);
setAgree2(!agree2);
setAgree3(!agree3);
} else{ //그외(하나만 체크되 있거나 아무것도 없다면) 전부 checked로 만듬
settotal(true);
setAgree1(true);
setAgree2(true);
setAgree3(true);
// setDisabled('');
}
}
<div>
<div>
<input type="checkbox" name="total_agree" value="total_agree" checked={total} onChange={totalchange} />
<label>전체 동의</label>
</div>
<div>
<input type="checkbox" name="agree1" value="agree1" checked={agree1} onChange={changeState1} />
<label>회원 약관</label>
<span>전체보기</span>
</div>
<div>
<input type="checkbox" name="agree2" value="agree2" checked={agree2} onChange={changeState2} />
<label>개인정보 수집 및 이용</label>
<span>전체보기</span>
</div>
<div>
<input type="checkbox" name="agree3" value="agree3" checked={agree3} onChange={changeState3} />
<label>위치 정보 이용 동의</label>
<span>전체보기</span>
</div>
</div>
<br/>
입력해주신 이메일 정보는 회원가입 시 이메일로 설정됩니다.
<br/>
<div>
<label>이메일</label>
<input type = "email" onChange = {EmailHandler}/>
<button name="button" onClick = {clickFunction}>인증코드 발송</button>
</div>
- 如果您激活完整的条款和条件,下面的所有复选框都会被激活。
- 如果您停用所有条款和条件,下面的所有复选框也将被停用。
- 单独来说,所有复选框都应启用。
- 如果您单独激活所有复选框,则整个条款和条件也将被激活。
- 如果以下任何复选框被禁用,则整个条款和条件都将被禁用。
- 激活全部条款和条件后,会激活会员注册按钮。
我尝试了几种方法,但都无法激活按钮。 我该如何实施? 请帮忙...
【问题讨论】:
-
我看到你有一个函数
changeState1,但我在你的代码中没有看到它。此外,如果您使用 useState 设置状态,您可能会遇到问题,因为它是异步的,但我不认为是这种情况。而且很多代码都丢失了。
标签: html css reactjs react-hooks