[React] Hilo General - Una librería para atraerlos y atarlos a todos

privet

Vosotros que hacéis para que un useEffect no que se ejecute en el primer render ?

1 respuesta
B

#661

export const useDidMountEffect = (func, deps) => {
  const didMount = useRef(false);

  useEffect(() => {
    if (didMount.current) func();
    else didMount.current = true;
    // eslint-disable-next-line
  }, deps);
};
1 1 respuesta
privet

#662 Vale, es lo que vi y estaba utilizando. Me gustaría que hubiese otra manera, esta la veo un poco rara

1 respuesta
B

#663 Necesitar este tipo de trucos indica muchas veces que no se esta enfocando bien el asunto. Pero más fácil es decirlo que hacerlo :sweat_smile:

Zoko

En que contexto necesitais de algo asi? Me parece un poco raro.

1 respuesta
privet

#665 A ver te pongo un ejemplo de para lo que lo use yo: Un select con diferentes opciones, por defecto el primer valor es Europa y te pinta las banderas de países europeos, pues la primera vez no quiero que se ejecute este effect, ya que los datos ya los tenia sin utilizar el useEffect pasándolos con getStaticProps por ejemplo, pues la siguiente vez que la opción cambie pues ahí ya se ejecuta.

No sé si ha quedado claro xD

2 respuestas
desu

@isvidal hoy he entendido el caso de uso del useMemo()

En teoria no tendria que hacer falta... pero tenia esta componente que se recargaba todo el rato y ni puta idea de que lo causaba.

Lo he puesto y adios.

Uso next btw, no se si importa.

Recomendais tooling para chrome? Creo que hay uno para dev tools que te muestra los hooks y el orden, eso me interesaria.

2 respuestas
B

#667 React dev tools. Aqui hay una mini app a modo de showcase: https://react-devtools-tutorial.vercel.app

jepeme

#666 yo creo que te funcionaria tambien con un

const [firstTime, setFirstTime] = useState(true);


useEffect(()=>{
 if(!firstTime){
    lo que quieras hacer
}else{
    setFirstTime(false);
}
},
[dependencias])

Escribo desde el móvil por lo que igual me he equivocado en algo pero algo así yo creo que te vale igual

1 1 respuesta
isvidal

#666 #669 Si ya tienes el valor cuando te llega por primera vez para que quieres ejecutar un useEffect?

Lo estais planteando mal segurisimo.

Al useState le puedes pasar un valor por defecto cuando lo defines

const [banderaSeleccionada, setBanderaSeleccionada] = useState(valorBanderaSeleccionada)

1 respuesta
isvidal

#667

@isvidal hoy he entendido el caso de uso del useMemo()

componente que se recargaba todo el rato y ni puta idea de que lo causaba.

Pick one Desu.

jepeme

#670 porque la primera vez no queremos que se ejecute, así la primera vez se pone en false y ya no vuelve a entrar

Ah vale ya se por donde vas, que no habia leido todo el hilo y he ido a responder el problema de una. Tiene razon vidal. Esto se soluciona mas fácilmente asignado por defecto al estado ese valor que quieres la primera vez.

O sea:

El estado toma valor inicial lo que tú dices que tienes al principio.

Después ya modificas el estado con useEffect o como quieras, pero no te hace falta lo que planteas me parece.

1 respuesta
isvidal

#672 Une useEffect que no quieras que se ejecute en el primer render pero si en el resto es caso muy pero que muy poco comun. Es mas, yo ni recuerdo haber picado nunca ninguno. Otra cosa es un useEffect que solo se ejecutan la primera vez (Cuando por dependencias deberian hacerlo mas) si, a veces, muy pocas, puedes necesitarlo por X edge case, y es lo mas comodo hacerlo asi (No se deberia).

Pero un useEffect que no se debe ejecutar en el primer ciclo de renderizado pero si en los otros es algo muy muy raro.

Es decir, hay useEffects con condiciones, solo ejecuta el codigo de este useEffect si el usuario ha marcado este checkbox como true.

Pero un useEffect de "no tires este useEffect si este es el primer ciclo de renderizado". Es algo que tiene que ser muy muy especial, y lo mas posible es que lo esteis plantenado mal.

2
privet

El lunes lo miro bien y os digo, seguramente tengáis razón, y no lo mire de forma adecuada,

26 días después
isvidal

Conferencia anual:

https://conf.reactjs.org/

2
isvidal

He hecho esto estos dias, quizas a alguien le interese, es un template/starter de Vite con React, TypeScript, Tailwind... Y mas cosas que yo considero basicas para empezar un proyecto web ahora:

https://github.com/jvidalv/vital

Para usarlo como proyecto nuevo: npx degit jvidalv/vital my-vital-app

Luego yarn o npm install para instalar las deps, y ya yarn/npm start para levantar el web server y empezar a picar codigo.

13
Zoko

La verdad es que muy pintón te ha quedado, tienes muy buen gusto por el diseño y eso se nota.
Por otro lado yo recuerdo hacer cosas asi pero al final siempre acabo haciendo el setup a gusto e invirtiendo el tiempo ya que no siempre quiero usar exactamente lo mismo, y te va a tocar andar updateando de cuando en cuando el proyecto y tienes que asegurarte que la manera de hacer setup no ha cambiado con un breaking change, etc, acaba cansando.

Pero vamos, que gj as always, ya sabes que si te planteas venirte pa fuera donde estoy.

1 respuesta
isvidal

#677 Yo creo que es lo suficiente lean con Vite como para no dar mucho por culo a la hora de upgradear. Pero si, el pain in the ass sera upgradear y mas si meto mas cositas que tengo planeadas meter quizas en formas de ramas storybook/cypress and co

JuAn4k4

Vidal vital con vite. VVV

1 respuesta
privet

esta muy chulo y la forma de utilizar tailwind me gusta bastante más así, no es que haya visto muchos proyectos con tw pero siempre los estilos los vi inline

1 respuesta
isvidal

#679 thats the joke. Vite + vidal = vital

10/10

1
JuAn4k4

#680 Es la forma de hacerlo, meterlos inline Como class es como te dicen ellos mismos que no hay que hacerlo. Aunque para ejemplos, funciona bien.

2
Zoko

Por cierto, que no se compartió por aqui pero hace unos dias sacaron la beta de las nuevas docs de React, y la verdad que son una puta maravilla, los conceptos muy bien explicados y quien hubiera podido tener esto en su dia cuando tocó aprender, creo que están dando en el clavo y se nota que está Dan detrás.

https://beta.reactjs.org/

15 2 respuestas
Vey

#683 Muchísimas gracias. Fíjate que venía ahora mismo a este hilo a preguntar una alternativa para aprender React xDDDD

PD: Si aún así conocéis más alternativas (libros, blogs, tutoriales, que no sean cursos) para complementar, os lo agradezco.

privet

#683 falta le hace

isvidal

Otra libreria de componentes de UI, muy limpita, como me gustan a mi:

https://www.radix-ui.com/

5
Zoko

Yo para mi sideproject uso Chakra, muy contento con ella tambien.

https://chakra-ui.com/

2 1 respuesta
TheBrotha

#687 A mi me esta gustando bastante utilizarla, me parece muy práctica

1
isvidal

He hecho esto:

https://github.com/jvidalv/nextal

Es un template de Next con basicamente lo mismo que #676 , incluye algunas cosas extra como el Modo Oscuro.

Aqui la demo:
https://nextal.josepvidal.dev/

5 2 respuestas
Axtrix

#689 como de costumbre, esta muy guapo