2 回答

TA貢獻1851條經驗 獲得超4個贊
1° - setState 是異步的
在 toggleCheck 中,您為變量設置了一個新狀態,checked
然后立即嘗試使用該變量checked
,但在某些情況下,該變量可能尚未更新,這可能會導致錯誤。在這種情況下,您可以使用callback
ofsetState
React 文檔,關于setState
和callback
:https : //reactjs.org/docs/react-component.html#setstate
輸入沒有事件處理程序
在輸入中,您只有checked
道具,但沒有諸如 之類的事件處理程序onChange
,因此當您單擊此復選框時,什么也不會發生,因為在這種情況下無需執行任何操作。將事件處理程序添加到輸入以在單擊時調用函數并更改狀態,就像您在button

TA貢獻1821條經驗 獲得超6個贊
原因是在切換當前/活動復選框時,沒有將當前復選框從選中更改為未選中的代碼。
一個可能更好的解決方案是為每個復選框設置多個狀態,并使用這些狀態在復選框本身上使用 onChange 進行切換。
<CustomInput globalCheck={globalCheckState} />
...
const CustomInput = (props) => {
const [check, setCheck] = useState(false);
if (props.globalChek) {
setCheck(true)
}
return (
<input checked={check} onChange={() => setCheck(!check)} />
)
}
通過這種方式,您可以在單獨的狀態下處理本地檢查狀態。該globalCheckState可以用你的按鈕進行切換。
添加回答
舉報