在React.js中将复选框的值添加并移除为数组状态

问题描述

我正在使用mui复选框组件,这就是我的显示方式:

 <FormControl component="fieldset">
    <FormGroup aria-label="position" column>
        {sortedData.map((obj) => {
            return (
                <FormControlLabel
                    value="type"
                    control={<Checkbox color="primary"/>}
                    label={obj}
                    name={obj}
                    onChange={handleTypeCheckboxChange}
                    labelPlacement="end"
                />
            );
        })}
    </FormGroup>
</FormControl>

现在此功能上的handleTypeCheckboxChange我想在用户选中或取消选中时添加或删除复选框的值。

这是我尝试执行的操作,但是没有用。它给了我NaN:

const [typeValue,setTypeValue] = useState([]) // the state array where I wanna store the checkbox checked values

const handleTypeCheckboxChange = (event) => {

    let typeValuesArray = []
    let index

    if (event.target.checked) {
        setTypeCheckboxCount(prevState => prevState + 1)
        typeValuesArray.push(+(event.target.name))
    } else {
        setTypeCheckboxCount(prevState => prevState - 1)
        index = typeValuesArray.indexOf(+(event.target.name))
        typeValuesArray.splice(index,1)
    }

    setTypeValue(typeValuesArray)
}

我该如何解决?

解决方法

pushindexOf方法参数中删除+号。
因为: +'anystring' = NaN

,

(代表问题作者发布解决方案,将答案移至答案空间)

此问题已解决。我将代码更改为此:

 const handleTypeCheckboxChange = (event,index) => {


        if (event.target.checked) {
            setTypeCheckboxCount(prevState => prevState + 1)
            
            setTypeValue([...typeValue,event.target.name])
        } else {
            setTypeCheckboxCount(prevState => prevState - 1)
            
            setTypeValue(
                typeValue.filter( v => v !== event.target.name)
            )


        }

        
    }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...