我有这个有状态的变量

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

07-24 09:47