当选中任何复选框时,我在启用按钮时有一个错误。目前它在第一次点击时不起作用,而只在第二次点击时起作用。取消选中复选框也适用于第一次单击。我认为这与各州有关,但我不太明白是什么导致了这个问题。
checked.length > 0 ? setTaskBtnsEnabled(true) : setTaskBtnsEnabled(false);
它消除了这个问题,所以我确信它与useState有关。不过,这条线对我来说很重要,所以我应该想出解决办法。我还尝试从相反的布尔值开始,但问题仍然存在。
上部构件:
const checkedBoxes = () => {
var checkedOnes = [];
for (
var i = 0;
i < document.getElementsByClassName('count-checkboxes').length;
i++
) {
if (document.getElementsByClassName('count-checkboxes')[i].checked) {
checkedOnes.push(
document.getElementsByClassName('count-checkboxes')[i].parentNode
.id
);
}
}
return checkedOnes;
};
const [taskBtnsEnabled, setTaskBtnsEnabled] = useState(false);
const handleBtnsEnabling = event => {
var checked = checkedBoxes();
checked.length > 0 ? setTaskBtnsEnabled(true) : setTaskBtnsEnabled(false);
};
前一个组件中的组件:
disabled={!taskBtnsEnabled}
id="nappi"
>
OK