我有这个有状态的变量
const [validMonths2019, setValidMonths2019] = useState([])
现在,选中复选框后,事件处理程序将被调用
<Form.Check label='Januar 2019' id='2019' onChange={(event) => handleCheck('01', event)} />
这是事件处理程序
function handleCheck (value, event) {
const months2019 = [...validMonths2019]
if (event.target.id === '2019' && event.target.checked) {
console.log(value) // value is 01
months2019.push(value)
setValidMonths2019(months2019)
} else if (event.target.id === '2019' && !event.target.checked) {
console.log(value) // value is 01
months2019.filter(item => item !== value)
console.log(months2019)// months2019 is still the same array.
setValidMonths2019(months2019)
}
}
过滤器方法没有做任何事情。数组保持不变。
最佳答案
过滤器不会改变数组,而是返回一个新数组,因此您需要捕获其值
const myNewArray = months2019.filter(item => item !== value)
console.log(myNewArray) //<-- Here is your filtered array