Porque realmente esto es solo un envoltorio alrededor de esta función de renderizado de fila. He usado este patrón antes en producción es increíblemente asombroso.
Entonces, otra cosa que puede atraparte son los tipos incorporados de React. Ahora, estos se mantienen por separado de React en sí. React no está escrito en TypeScript. Está escrito en Flow, creo. Y lo que hace entonces es que tienes que instalar React y luego instalar los tipos de React. Y el tipo de, porque no están construidos juntos, a menudo pueden hacer algo ligeramente diferente a la base de React, no de una manera peligrosa, pero hay algunas cosas que están en los tipos que React en sí no ha documentado. Y esto puede ser realmente, realmente doloroso.
Entonces, vamos con uno simple aquí, que es digamos que tienes un número en nuestro estado. Ahora, como se predijo, si comienzas con un número en tu USE state aquí, entonces este estado va a ser tipado como número y el estado establecido también será tipado como número. Así que no puedo pasar una cadena a esto, voy a tener que pasar un número. Y estos son todos parámetros incorporados en React, por supuesto, si los usas.
Ahora, ¿qué pasa entonces si no tengo un valor para pasar aquí, pero aún quiero que este estado esté tipado como un número? Bueno, puedes pasar esto como un argumento de tipo. Y entonces puedes decir, bueno, este estado ahora es un número. Y podrías pensar que el estado ahora está tipado como número porque puedo establecer el estado a número, pero no es así, en realidad está tipado como número o indefinido. Y eso es correcto porque la primera renderización aquí, antes de establecer mi estado, imagina si hago esto en un, sé que esto es una mala práctica hoy en día, no muy de moda, pero digamos que simplemente establezco mi estado a uno dentro de este use effect. Bueno, en la primera renderización, el estado en realidad va a ser indefinido porque no estoy pasando nada a esto. Y mientras que si realmente le paso un número, entonces va a estar definido en esa primera renderización. Ahora, la forma en que puede hacer esto, la forma en que sabe cómo hacer esto es si hacemos clic en el comando en el estado aquí, terminamos en este archivo muy, muy aterrador. Y por supuesto, inmediatamente perdí mi lugar donde básicamente estamos dentro de las definiciones de tipo para todos estos hooks. Así que tenemos use context, tenemos use state, ya sabes, oh, hola chicos, toda la pandilla está aquí. Y lo que tenemos entonces, es que tenemos una sobrecarga de función en useState. El estado puede ser llamado de dos maneras diferentes dependiendo de lo que quieras, básicamente. Entonces, esta primera sobrecarga aquí, esto es realmente difícil de leer. Así que déjame desglosarlo un poco. Lo que está pasando es que useState, es una función genérica, hemos visto un genérico antes. Y está diciendo que el estado inicial es esta S o una función que devuelve S. No guardes mis cambios, por favor. No quiero ser responsable de romper nada.
Comments