Estoy obteniendo datos de la API y completando los textos de entrada del correo electrónico buscado. Estoy usando bullet y setBullet para mantener el estado. El problema es que debo definir un elemento inicial en el estado de uso como este:
const [bullet, setBullet] = useState(['Temp']);Pero al definirlo así, obviamente agrega "Temp" como la primera entrada y luego siguen todos los correos electrónicos. Pero si defino el estado así:
const [bullet, setBullet] = useState([]);Obtengo errores en onChangeHandler y función de mapa en useEffect.
const onChangeHandler = (index: number, value: string) => { setBullet((bullets) => bullets.map((bullet, i) => (i === index ? value : bullet)) ); }; useEffect(() => { fetch( "https://reqres.in/api/users?page=2") .then((res) => res.json()) .then((json) => { json.data.map((data: any) => { setBullet((bullets) => [...bullets, data.email]); return console.log(data.email); }) }) }, [])El error viene en la función setState:
Argument of type '(bullets: never[]) => string[]' is not assignable to parameter of type 'SetStateAction<never[]>'. Type '(bullets: never[]) => string[]' is not assignable to type '(prevState: never[]) => never[]'. Type 'string[]' is not assignable to type 'never[]'. Type 'string' is not assignable to type 'never'Para resumir esto es lo que estoy consiguiendo. Quiero quitarle la viñeta 'Temp'.
Cualquier ayuda será muy apreciada.
Gracias
Puede pasar cualquier tipo que desee usar useState usando genéricos. Si no pasa el tipo, useState intentará deducirlo del valor inicial. Dado que está pasando una matriz vacía, el tipo no se puede inferir automáticamente, por lo que debe hacerlo manualmente:
const [bullet, setBullet] = useState<string[]>([]);