¿Por qué este código no funciona? creo este gancho personalizado para llamar al gancho useState:
export const useAnimer=({})=>{ const [animList, setAnimList] = useState({}) useEffect(()=>{ ....... onDone:(anim,name)=>{ console.log("anim list updating...") setAnimList((a)=>{ console.log("anim list updated",a) return a })} ........ },[depedency])}es solo impreso
console.log("actualización de la lista de animaciones")
pero nunca imprimir
console.log("lista animada actualizada")
aquí donde se usa onDone en anotherfile.js. se llama cada 100 ms dentro de la función asnyc que devolvió el objeto de promesa
const animIt = async (frame)=>{ while(true){ frame.pools.timepassed+=100 frame.pools.frames.forEach((a,i)=>{ a.onDone(a) }) await new Promise(resolve=> setTimeout(()=>{ resolve() },100)) } } }primero, no puede usar ganchos de esta manera a[name]=anim puede agregar nuevos valores a objetos como este {...a,[name]:anim} y luego agregarlo a su estado: setAnimList({...a,[name]:anim})
segundo, si fuera usted, definiría la función Flecha y la devolvería, algo como esto:
export const useAnimer=({})=> { const [animList, setAnimList] = useState({}) const handleAddAnim = (anim, name) => { setAnimList({...animList, [name]: anim}) } return { animList, handleAddAnim }}
y cada vez que quiera usarlo, lo llamaría de esta manera:
const {animList, handleAddAnim} = useAnimer();espero ser útil