Esos hooks deberían estar en el top level del componente y ser inicializados ahi antes de meterlo en el Map
En javascript, y mayoria de langs, no hay ningún problema en escapar una referencia del stack a la heap. El compilador/transpiler/bundler lo que sea que haga magia negra te lo mueve. Si que en C y CPP te hace undefined, y en Rust no compilara.
Desconocía que era buena practica tener la referencia global, uso el linter de vscode sin nada extra, asi que no me debe marcar todo.
Lo he cambiado.
Also, xq usas un Map, un simple objeto no te vale?
Me pareció mas simple para empezar.
Si en lugar de tengo un map tengo un objeto me cambia que no puedo tener enums numericos, y no me gusta, aunque sea una micro-optimizacion que en js tenga poco sentido jaja es mania.
https://github.com/vrnvu/lifts/commit/5d44fca1264472626e832f5b63bb6c865ee66da6
hoy en dia se usa Jotai o Zustand
He mirado zustand esta tarde pero no me gusta, entiendo que tiene beneficios al tener el curry a la hora de re-renderizar o no que comentas, pero a nivel de codigo no me gusta mover el código de la scope global a un curry.
Por ejemplo:
export function getWeight(userConfig: UserConfig, exercise: ExerciseType): number {
return userConfig.exercises[exercise][0];
}
Esta función debería estar dentro de mi store:
const useUserExercisesStore = create<State & Action>((set) => ({
ex1: 123,
ex2: 1234,
updateEx1: (v) => set(() => ({ ex1: v })),
updateEx2: (v) => set(() => ({ ex2: v })),
getWeight: (ex) => // no se como seria ahora mismo referenciar las keys del set, set.ex?
}))
La verdad, no me gusta como react mueve todo dentro de los hooks y hace curry de todo, como bien dices tiene sus motivos históricos para optimizar el dom y los refrescos, y me parece interesante tu aporte, a nivel yo de hacer mi proyecto for fun, prefiero tenerlo global.
No se si me dejo algo o hay otro motivo por el cual debería moverlo dentro del curry.
Paralelamente hay cosas radicalmente diferentes como Svelte o SolidJS, especialmente Svelte que es sexo duro, que deprecan la DX de React.
Si, he usado nextjs en el trabajo. Y para hacer mis proyectos probe React, Astro, Remix, Vue. Y creo que me dejo 1 mas. Me gustaron astro y remix pero como igualmente necesitaba librerías de componentes y usar algo como React tire por ahi.
Remix creo que es el que usa un approach differente al hacer llamadas y cargar la pagina, si no es Remix es el que no me acuerdo, muy interesante.
podrias hacer un custom hook para get/set
Si lo tengo hecho pero no lo he usado porque no lo refactorize jaja No es un custom hook porque no uso react, pero vamos, tenia funciones auxiliares que en lugar de hook le paso la referencia del state y pista.
export function updateLastWeight(userConfig: UserConfig, exercise: ExerciseType): Dispatch<SetStateAction<number>> {
return userConfig.lastExercises.get(exercise)![1];
}
tenia estos updates, como dices no los uso, el codigo no esta muy refactorizado y por ejemplo los componentes de Card que uso los tengo que re-hacer en algun momento. Pero cuando empece el proyecto no sabría que necesitaría asi que no podia re-factorizar sin hacer primero las pruebas.
Una cosa que si me gusta del objeto y que quería tener para el estado es que es mas fácil de serializar, para cuando meta el localstorage. Lo que aun no me he decidido que quiero guardar porque tengo 2-3 ideas de visualización.
Ah, y a mi angular me parece mil veces mejor que React. Pero de calle. Solo con el doble binding una store global que te la picas tu a mano sin problema y a volar.