En mi proyecto, tengo muchas casillas de verificación en las que estoy trabajando y el objetivo es usar una onChange para realizar un seguimiento de la casilla marcada y almacenar sus valores dentro de una matriz y eliminarla cuando se desmarca. Pero lo que he hecho es devolver un error. ¿Puede alguien por favor decirme con lo que estoy haciendo mal. codeandboxenlace
el error que estoy recibiendo
TypeError selected.indexOf is not a function OnChange /src/App.js:11:24 8 | 9 | const OnChange = (id)=>{ 10 | let selected = isselected; > 11 | let find = selected.indexOf(id) | ^ 12 | 13 | if(find > -1){ 14 | selected.splice(find, 1)Aquí está mi código App.js
import React from "react"; import "./styles.css"; import {useState} from 'react' export default function App() { const [isselected, setisselected] = useState([]) const OnChange = (id)=>{ let selected = isselected; let find = selected.indexOf(id) if(find > -1){ selected.splice(find, 1) }else { selected.push(id) } setisselected({selected}) console.log(isselected) } return ( <div className="App"> <div className="first-search"> <input type="checkbox" className="input-1" value="Last 7 days" name="last seven" id= "1" onChange={ (e)=> OnChange(e.target.value)} selected={ (e)=> isselected.includes(e.target.value)} /> <label htmlFor=""> Last 7 days </label> </div> <div className="first-search"> <input type="checkbox" className="input-1" name="last24" value="last24" id= "2" onChange={ (e)=> OnChange(e.target.value)} selected={ (e)=> isselected.includes(e.target.value)} /> <label htmlFor=""> Last 24 hours </label> </div> </div> ); }setisselected({selected}) si esto intenta restablecer isselected, ¡ se ha declarado y es constante!
nota: name="lost seven" y name="last24" value="last24" no se ven bien como convención de codificación personal.
*Sería bueno que publicaras el error desde un mensaje de depuración del navegador. por ejemplo, firefox o cromo.