我有一個復選框,當被選中時,它應該保存一些值,當被取消時,它應該洗掉我剛剛取消的那個值。從我在
如果我把它們反過來,這就是我試圖保存資料時的樣子(這確實有效,但由于它只做一個或另一個,所以會重復)
任何提示、建議、檔案或幫助都非常感謝。如果需要其他東西,請告訴我。
uj5u.com熱心網友回復:
好吧,首先你需要控制組件的狀態。這意味著你必須管理它何時被檢查,何時不被檢查。
const [ checked, setChecked ] = useState(false)
<Checkbox
checked={checked}
...
/>
這部分完成后。現在你有兩個選擇。你可以按照你想做的方式來做,代碼會是這樣的:
const [studentID, setStudentID] = useState([] )
const [ checked, setChecked ] = useState(false)
const setStudent = (estudiante, check) => {
console.log(estudiante, check) //這里你可能會有檢查的倒置值,因為你得到的是舊狀態。但你可以用它來作業
setChecked(span class="hljs-params">prevState => !prevState)。
var checkBox = document.getElementById('checkBox') 。
if(checkBox.ariaChecked == true){
console.log("Save data"/span>)
let data = studentID;
data.push(estudiante)。
setStudentID(data)。
console.log(studentID)
}
else{
console.log("洗掉資料")
}
}
<Checkbox
checked={checked}
color = "primary"/span>
id = "checkBox"/span>
onChange = {() => setStudent(estudiante.uid, checked)}
inputProps={{ 'ria-label': 'controlled' }}}。
/>
第二種方案是利用useEffect掛鉤:
const [studentID, setStudentID] = useState([] )
const [ checked, setChecked ] = useState(false)
const [ id, setId ] = useState(null)
useEffect(() => {
const setStudent = (/span>) => {
if(checked){
//your code。
}else{
//your code}else[/span]{
}
}
//重要的是:你需要記住,這個useEffect將在組件剛剛渲染的時候運行一次。所以你需要在呼叫這個函式之前在這里設定一個條件。
if(!isFirstTime){
setStudent()
}
},[checked, id])
<Checkbox
checked={checked}
color = "primary"/span>
id = "checkBox"/span>
onChange = {() => {setId(ESTUDIANTE. uid),setChecked(span class="hljs-params">prevState => !prevState)}}.
inputProps={{ 'ria-label': 'controlled' }}}。
/>
我真的希望這有幫助。我試圖讓它變得簡短而清晰
。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332283.html
標籤:

