Learn React: crea una aplicación web usando Next. js, Material UI y TypeScript | Zoë Davidson | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Learn React: crea una aplicación web usando Next. js, Material UI y TypeScript

teacher avatar Zoë Davidson, Software Engineer & Cinematographer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introduccion

      0:31

    • 2.

      Proyecto del curso

      0:33

    • 3.

      ¿Por qué reaccionar?

      1:08

    • 4.

      Componentes

      0:48

    • 5.

      Accesorios y estado

      0:36

    • 6.

      Crea una aplicación de React

      0:56

    • 7.

      TypeScript

      0:41

    • 8.

      Next.js

      0:27

    • 9.

      Estilos de la aplicación

      26:22

    • 10.

      Agregar estado global

      30:15

    • 11.

      CONCLUSIÓN

      1:01

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

221

Estudiantes

4

Proyectos

Acerca de esta clase

Esta clase te enseñará todo lo que necesitas saber para escribir React usando Next.js, desde conceptos principiantes hasta avanzados:

  • Qué es React
  • Cómo usar componentes y estado
  • Cómo trabajar con Next.js
  • Cómo crear una aplicación ToDo

Mi nombre es Zoë, soy ingeniero de software y exprofesor de cine. Puedes ver mi trabajo aquí.

Esta clase es para cualquier persona que haya tenido interés en aprender a programar, o que esté buscando abordar una entrevista técnica en un futuro cercano.  Tu proyecto de clase será crear tu propia aplicación ToDo usando React y Next.js. 

Esta clase incluirá una guía paso a paso sobre cómo aprender React desde cero.

  • Cómo usar React
  • Lo que hace que una biblioteca sea diferente
  • Cómo construir un componente
  • Cómo usar el estado

Una vez que hayas tomado el curso, ¡asegúrate de dejar una reseña de lo que pensaste del curso!

Recursos

Equipo de filmación

  1. Canon 5D IV
  2. Canon 24 - 70 f/2.8
  3. Amaran 60x - asequible y potente
  4. Desview T3 Teleprompter
  5. Montaje de escritorio para equipo pequeño
  6. Sennheiser MKE 600
  7. Brazo de micrófono para recién llegados
  8. Zoom H4n Pro

Equipo de desarrollo

  1. M1 Macbook Pro 13"
  2. Teclado mágico de Apple
  3. Logitech MX en cualquier lugar
  4. Soporte dual para laptop
  5. LG 4K 27"
  6. Silla de escritorio ergonómica - barata
  7. Bose QC 35 II
  8. AirPods Pro
  9. Monitor y soporte de espresso (viaje): increíble

Conoce a tu profesor(a)

Teacher Profile Image

Zoë Davidson

Software Engineer & Cinematographer

Profesor(a)

Hey! I'm Zoe, a software engineer, filmmaker, and former professor from Toronto, Canada. I have an MFA in Film from Howard University, and also do work as a software engineer.

In the past, I've worked for the University of the District of Columbia, the Academy of Motion Picture Arts and Sciences, Lionsgate, Huffington Post, and I'm a member of organizations like the Canadian Society of Cinematographers.

The films that I've worked on have been featured at festivals around the world, including Sundance, ABFF, Trinidad Tobago Film Festival, and CaribbeanTales.

Check out my latest work, here: zoeahdavidson.com

Ver perfil completo

Habilidades relacionadas

Desarrollo Herramientas de desarrollo React
Level: Intermediate

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introduccion: ¿Alguna vez has oído hablar de una de las bibliotecas front-end más populares del mundo, React? Hoy, vamos a recorrer todo lo que necesitas saber para construir tu propio proyecto usando React. Incluyendo cómo construir esta aplicación para hacer. Hola, mi nombre es Zoe. Soy ingeniero de software y ex profesor al que le encanta educar a otros sobre cómo comenzar con la codificación He creado toneladas de sitios web y aplicaciones web usando React CSS, HTML y otra tecnología. Al final de este curso, podrás hacerlo por ti mismo. Empecemos. 2. Proyecto del curso: Proyecto de clase. El proyecto para esta clase es construir una app para hacer completamente funcional. Para ello, necesitarás acceso a una computadora y un editor de código como código de Visual Studio. También debes tener algo de comprensión del script java o tipo script así como HTML y CSS. Para poner en marcha nuestra app, vamos a usar un framework llamado Next S, que usa React. También vamos a utilizar material es para algunos estilos básicos y componentes. Un salto enlaza con cualquier activo y recurso que necesites en la pestaña de proyecto y recursos. 3. ¿Por qué reaccionar?: ¿Por qué reaccionar? Si ya estás familiarizado con React, puedes saltar adelante a las lecciones tutoriales. Pero en las próximas lecciones, vamos a repasar qué problema se creó React para resolver, cómo se usa y cómo ejecutarlo. React fue desarrollado en Facebook y lanzado al público en 2013. Inicialmente se creó con el fin de manejar recargas y actualizaciones ineficientes de página que en su momento requerían que se repintara todo el Dom o el modelo de objeto de documento Con cada actualización, React, soluciona este problema creando lo que llamaron el Dom virtual, una representación del Dom en la memoria. Esto permitió a React actualizar únicamente aquellos aspectos o componentes del Dom que cambiaron en lugar de toda la página, resultando en un mejor rendimiento. React ha sido un cambio de juego en el espacio de desarrollo web y sigue siendo una de las bibliotecas más populares que existen Debido a su uso de componentes, los desarrolladores ahora son capaces de escribir código modular con mucha más facilidad, lo que les permite desarrollarse manera más eficiente y efectiva. Otros frameworks populares que a menudo se comparan para reaccionar incluyen View y Angular. 4. Componentes: Componentes. Los componentes son piezas de código reutilizables que reaccionan apalancamientos para mantener su modularidad Piense en ellos como los bloques de construcción que los desarrolladores utilizan para crear aplicaciones. Un componente es una pieza de código independiente y reutilizable que encapula su propia funcionalidad, estado y estructura Estos componentes se pueden considerar como una combinación de HTML y Javascript o JSX, que se usa en React Cada componente puede tener su propio estado, que representa datos que pueden cambiar con el tiempo, y un conjunto de propiedades o props que permiten a los componentes principales transmitir datos a sus hijos Así como HTML tiene elementos dentro de otros elementos reaccionan, tiene componentes dentro de otros componentes. Estos componentes internos se consideran los hijos de los componentes externos. 5. Accesorios y estado: Apuntalamientos y estado. Para entender y usar realmente reaccionar al máximo, necesitamos hablar de estado y propiedades O como se les llama, utilería. Echemos un vistazo a un componente de cuenca. Estos componentes están realmente solo en sus funciones base. Pueden tomar argumentos, pueden modificar variables, y pueden devolver un valor. Pero simplemente hablando, podemos pensar en props como los argumentos que se pasan por nuestra función cuando se llama, y declarar como las variables locales que solo existen dentro de nuestro componente dado Vamos a ampliar esta definición más adelante, pero es importante entender primero cómo funciona. 6. Crea una aplicación de React: Crea la app React. varias formas de configurar una aplicación de reacción. En este curso, repasaremos dos de los más populares. La forma original de configurar una aplicación de reacción era usando CRA o crear una aplicación de reacción. La aplicación Create React también se desarrolló en Facebook con el fin de eliminar gran parte de esta complejidad y convertirla en un comando simple pero poderoso. Al usar la aplicación create react, te ahorrarás horas de dolor de cabeza cuando intentes configurar una nueva app de React por primera vez. Para ejecutar, crea la app React. Simplemente ingresa px, crea la app react, seguido del nombre de tu app en la terminal y pulsa enter. Después de unos minutos, estarás todo listo para ir. Puedes ejecutar el comando por ti mismo en tu terminal si quieres ver cómo se ve create react app. No obstante, te advertiría que no lo uses para construir tu proyecto ya que ya no se mantiene. En su lugar, sugiera usar frameworks o herramientas como Next S o Vet. Usaremos la siguiente S para construir nuestro para hacer. 7. TypeScript: Mecanografiado. En lugar de usar Javascript para nuestra aplicación para hacer, usaremos mecanografiado Typescript es en realidad solo un superconjunto de Javascript. Lo que eso significa es que se construye de Javascript y, en última instancia, se compila hasta Javascript. Pero tiene algunas características adicionales que Javascript no nos da fuera de la caja. Typescript nos permite usar la escritura estática en lugar de dinámica, Atrapa muchos más errores al escribir nuestro código, a diferencia de en tiempo de ejecución Desarrolla automáticamente un nivel de documentación para tu proyecto. Es un poco diferente a Javascript, pero lo pasaremos juntos paso a paso a lo largo de nuestro tutorial. Si puedes escribir Javascript, estoy seguro que puedes escribir Typescript 8. Next.js: Siguiente S en los años que han pasado desde que se introdujo la aplicación create react por primera vez, se han construido y desarrollado muchos frameworks a partir de ella. Un framework muy popular hoy en día es Next JS. Siguiente GS proporciona una gran cantidad de optimizaciones fuera de la caja, como enrutamiento de renderizado servicida y SEO mejorado Y como tal, es uno de los favoritos de los desarrolladores front-end. Lo usaremos en nuestros proyectos, así que vamos a sumergirnos y comenzar. 9. Estilos de la aplicación: Bien, así que comencemos. Entonces lo primero que vamos a querer hacer es instalar el paquete que estamos usando. En realidad vamos a usar esta plantilla aquí que nos permite crear una aplicación que tenga el siguiente S Material, UI y escriba script todos juntos a la vez. Si tuvieras que instalar esto manualmente uno por uno, comenzando con el siguiente JS y luego instalarlo, material I y escriba script, tardaría un poco más en configurarlo. Así que solo estamos usando esta plantilla como atajo para ahorrarnos algo de tiempo en el tutor. Entonces, qué voy a hacer aquí para poder utilizar esto, y dejaré el enlace a este repositorio Github en particular abajo en la pestaña de proyectos y recursos a continuación. Entonces solo voy a ir por el lado derecho aquí donde está el botón verde. Sólo voy a copiar la URL del proyecto. Y luego voy a entrar en la carpeta de desarrollo y la voy a clonar en una carpeta a la que voy a llamar para hacer. Así que vamos a hacer eso y luego increíble. Entonces está creado, déjame pasar a mi carpeta de hacer ahora. Documentos, desarrollarlo y hacer. Y luego vamos a abrir eso en código VS. Muy bien, increíble. Ahora todo está en código VS, deberíamos estar bien para ir. Ahora lo que vamos a hacer es usar NPM para instalar los paquetes con los que estamos trabajando Porque aunque tenemos nuestro paquete en Json, que ya hemos hablado antes, tiene todos estos paquetes que aún necesitan ser instalados para que podamos usarlo. Así que sigamos adelante y empecemos con eso. Entonces voy a empezar abriendo una nueva terminal. Y verás que ya está inicializado como repositorio Git Esa es una característica de usar next S. Nos permite básicamente obtener todas esas cosas que tendríamos que hacer una por una, básicamente hechas por nosotros. Seguimos adelante y vamos a escribir NPM I para instalar y dejar que se instale Y como verás arriba en la parte superior izquierda aquí, acaba de aparecer una carpeta llamada módulos de nodo Y esto es básicamente el resultado de instalar todos estos paquetes. Es toda la información que va a necesitar el proyecto para funcionar. Entonces verás que tenemos instalados módulos de nodo ahí, un par de errores ahí, pero no nos vamos a preocupar por ahí. Y luego vamos a seguir adelante y ejecutar NPM inicio para iniciar nuestro proyecto Ahí estamos recibiendo un pequeño error. Oh, ¿sabes qué? Sí necesitamos ejecutar NPM, ejecutar dev. Eso es lo que es. Bien, lo siento, empieza a esforzarse. Dos comandos diferentes. Entonces vamos a ir por la derecha aquí y si hemos hecho las cosas correctamente, el anfitrión local 3,000 como se dijo en nuestra terminal, deberíamos poder sí, empezar. Así que tenemos nuestra próxima S arriba y girando. Estamos usando material Y y estamos usando script tipo. Así que básicamente vamos a comenzar a desarrollar y construir nuestra aplicación para hacer para que podamos enfocarnos en las cosas que importan. Bien, entonces la app para hacer que vamos a estar construyendo, si solo buscas en Google una, ya sabes, básicamente quieres crear algo, ya sabes, con cualquier aplicación dada para hacer. Quieres crear algo que tenga como una lista de tareas. Ya sabes, alguna manera de marcar lo que estás haciendo y alguna forma de eliminar lo que estás haciendo. Uno que he creado en el pasado y que en realidad vamos a modelar esto después es esta aplicación para hacer aquí mismo. Entonces esto es por lo que nos estamos esforzando. Queremos hacer app que cuando agreguemos a Do, podamos agregarla a la lista. Ya sabes, con solo golpear Submitter, presionar Enter, podemos marcarlo y, ya sabes, tal vez tener algún estilo asociado a eso Podemos eliminarlo si queremos. Y luego si lo agregamos para hacer y actualizamos la página, queremos que se quede bien. No queremos que desaparezca porque queremos poder usar esto para hacer la aplicación como algo así como nuestra aplicación personal para hacer durante el tiempo que queramos. Entonces hay un par de cosas que vamos a tener que hacer para que funcione así. Pero usaremos esto para hacer app como referencia en caso de que necesitemos ayuda en el futuro. Ahora mismo tenemos esta aplicación aunque. Este próximo S kits de inicio. Sigamos adelante y deshagamos de todo lo que no necesitamos usar saltando a nuestro proyecto de código VS Aquí voy a entrar en páginas. La forma en que funciona la siguiente S es que en realidad estructura tu app en términos de páginas Debido a que estamos en la página principal de la app, solo estaremos modificando este archivo de índice como ya hablamos antes. Tenemos JSX, que es Javascript mezclado con Javascript XML. Se trata de S, que es sólo la versión mecanografiada de lo mismo que mencioné antes Si no estás familiarizado con Typescript, es muy, muy similar a Básicamente son lo mismo. Typescript es solo Javascript con tipos, y vamos a entrar en eso a medida que trabajamos en nuestro proyecto Entonces, lo primero que queremos hacer es aclarar todo esto en el medio. Así que vamos a limpiar todo, desde Maine hasta el pie de página y deshacernos de eso. Solo queremos una pizarra en blanco y aquí vamos a cambiar el título para hacerlo genial. Entonces como verás a la derecha, no tenemos nada que hacer, así que sabemos que hemos hecho nuestro trabajo correctamente. Lo limpiamos. También me voy a deshacer de los estilos aquí, solo para que podamos realmente, realmente empezar de una pizarra en blanco. Bien, así que volvamos a echar un vistazo a nuestra app. ¿Qué queremos hacer? Bueno, creo que vamos a ser, vamos a necesitar crear varios componentes diferentes aquí. Así que vamos a necesitar tener este tipo de componente más grande que aloja el fondo. Tal vez solo puedas agregar el fondo al cuerpo, pero luego tendremos aquí este contenedor que realmente contiene lo real para hacerlo solo. Pero parece que tenemos un encabezado aquí que podríamos nombrarlo. Arte para hacer lista o lo que sea, pero solo está llamado a hacer por el momento. Y entonces tenemos este insumo que se vincula a someter y lo real a hacer ellos mismos. Entonces hay algunos componentes que queremos crear. Piensa en crear aquí. Empecemos diseñando primero el fondo. Creo que lo que hemos hecho aquí es un gradiente lineal. Entonces creo que eso es lo que probablemente voy a hacer por nuestros proyectos también. Lo que voy a hacer para agarrar eso es que voy a buscar la semántica para gradiente lineal Y sí, esto es lo que quiero hacer. Quiero agarrarlo como color de fondo o básicamente simplemente convertirlo en el fondo. Así que voy a regresar a la app y luego probémoslo en nuestro div aquí y veamos si funciona. Si cubre toda la página, entonces va a ser gradiente lineal y solo tenemos que envolver esta cita. Esto es CSS en línea si no lo ha usado antes. Básicamente, esto nos está permitiendo escribir nuestro CSS dentro del propio elemento real. Así que solo tenemos que asegurarnos de que eso se envuelve. Sí. Oh, ya sabes, lo siento, puse la cita en el lado equivocado. Ahí vas. Fresco. Entonces echemos un vistazo a lo que nos ha dado eso. Mm hm. Ah, y agreguemos algo de textura para que podamos ver que estamos trabajando en el archivo correcto. Todo bien. Para hacerlo increíble. Entonces esto nos está dando un gradiente lineal, simplemente no cubre toda la página. Entonces un paso más voy a agregar a esta página. Básicamente, quiero que la página ocupe toda la página visible. Entonces, hay una propiedad llamada view height que realmente puedes usar para tomar el 100% de la vista, la altura de la vista que estás usando. Entonces estableceremos la altura a 100 VH con soportes para altura de vista. Y vamos a salvar eso. Y ahí vamos. Tenemos nuestra página tomando el fondo, o al menos para nuestra página de inicio, ocupando toda la página. Eso es genial. Una característica más que voy a agregar a este estilo de degradado lineal aquí es un giro. Entonces voy a sumar un giro de 0.125. Y eso sólo va a girar la línea donde está el gradiente ahora mismo. Es algo así como a través de la página. Simplemente va a darle la vuelta, así que vamos a salvar eso. Genial. Y estos son solo un poco de una llamarada extra. Fresco. Así que terminamos de estilizar eso por el momento. Pasemos a la creación de nuestros componentes. Entonces quiero crear una nueva carpeta aquí, y voy a llamarla componentes. Como mencioné en mis lecciones anteriores, algo que me gusta hacer cuando estoy creando un proyecto de react es crear una carpeta de componentes para que pueda categorizar y construir todos mis componentes en las carpetas existentes Encuentro que me facilita mucho las cosas. Solo depende de la aplicación con la que estés trabajando y cómo te gustaría estructurar tu proyecto. Entonces dentro de la carpeta de componentes, voy a crear un nuevo archivo y voy a llamar a este archivo para hacer contenedor porque este va a ser ese gran contenedor blanco que vimos en el otro, en el ejemplo. Entonces voy a presionar Enter y luego usar, creo que soy yo, es un auto completo, voy a usar R AFC y va a crear automáticamente un componente funcional Entonces ahí vamos, tenemos un componente funcional llamado a hacer contenedor. Lo que voy a hacer ahora, saltando nuevo a esa página principal, solo voy a reemplazar nuestro pequeño texto aquí que dice a Do y reemplazarlo con nuestro componente contenedor Do que como lo ves realmente importa automáticamente debido a algunas de las extensiones que tenemos instaladas Y solo voy a decir que si tienes más dudas sobre extensiones, solo deja un comentario abajo y te puedo recomendar un montón si necesitas ayuda con cosas como esta. Así que saltando a, verás a la derecha aquí que hacer contenedor ahora está realmente presente en el, en la aplicación Entonces, ya sabes, estamos trabajando bastante bien. Entonces lo siguiente que queremos hacer es en realidad queremos darle estilo, queremos que nuestro contenedor para hacer esté en el centro de la página, ¿verdad? Queremos que esté ahí. Entonces para hacer eso, creo la forma más fácil de hacerlo sería configurar nuestra página para que sea una caja flexible porque esto va a ser lo único en nuestra página. Podemos permitir que sea una caja flexible con la mínima preocupación de que va a afectar a cualquier otra cosa. Entonces en nuestra página, lo que voy a hacer aquí es establecer la pantalla, hacer flix y luego voy a justificar que el contenido sea centro y guardar eso. Como verás, el contenedor ya se ha rebotado al centro, por lo que ya está centrado en la página Lo siguiente que voy a querer hacer ahora es en realidad darle estilo al contenedor en sí. Y voy a agregar algo de estilo inline a eso llegar a donde queremos que esté. Usando un poco de estilo en línea. En la inmersión aquí mismo, voy a ir al estilo y luego voy a establecer un margen superior de digamos cinco M por ahora, solo para empujarlo un poco hacia abajo de la parte superior de la página. Entonces lo siguiente que quiero hacer ahora es establecer un color de fondo. Color de fondo. Sólo vamos a ponerlo en blanco, que es FF y guardar eso, genial. Entonces tenemos nuestro contenedor para hacer, pero como puedes ver va como todo el camino hasta la parte inferior de la página. No necesariamente queremos eso. Entonces, lo que realmente voy a hacer es establecer una altura máxima de altura y luego eso solo lo mantendrá agradable y contenido. Podemos hacer esto más grande si queremos. Podemos hacerlo más receptivo, o podemos hacerlo desplazable Todo este tipo de cosas así son agradables de tener, pero nos preocuparemos por eso a medida que bajemos de la línea. Ahora mismo, solo queremos conseguir este tipo de MVP, el producto mínimo viable con el que estamos trabajando aquí Bien, un par de cosas más que estoy viendo aquí es que no queremos que hagamos nuestro es que realmente se aplasta hasta el borde del contenedor Así que probablemente queramos agregar algo de relleno en. Entonces voy aquí y agrego un poco de relleno. Vamos a agregar dos carnero de relleno en todos los sentidos. Genial. Se ve bastante bien. Entonces lo último aquí, vamos a agregar un radio de borde para simplemente curvar esas esquinas. Entonces vas a escribir el radio de borde y luego voy a configurarlo en, y guardarlo. Genial. Estoy bastante contento con cómo se ve en estos momentos. Creo que podemos hacer un poco más una vez que empecemos a agregar en los componentes internos aquí como encabezado. Y también vamos a agregar en la entrada, el botón y lo real a hacer. Así que vamos a saltar y hacer eso. Volviendo a o diciendo realmente en nuestro contenedor Do, sigamos adelante y agreguemos el encabezado Así que vamos a crear uno H. Y en realidad porque estamos usando material I, que es una biblioteca particular de estilos y componentes que está disponible para nosotros. Debido a que estamos usando react, podemos usar algunos de sus componentes integrados que nos permiten diseñar las cosas un poco más rápido. Nos permitirá ponernos en marcha un poco más rápido con nuestra Apple. Y también enséñanos una nueva biblioteca y danos una nueva herramienta con la que estar familiarizados. Entonces voy a usar un componente que han llamado tipografía e importación Ahora por experiencia previa sé que el componente topográfico tiene un elemento o una propiedad llamada variante. Entonces voy a usar la propiedad variant y voy a querer acceder a la variante de H one, porque este va a ser nuestro título en nuestra página. Y luego dentro de estos dos paréntesis, voy a escribir todos. Ese va a ser nuestro título por ahora. Y ahí vamos, ahí lo tenemos. Es un poco diferente al que teníamos antes. Podría querer seguir adelante y darle un estilo un poco diferente solo para el propósito de este tutorial. Pero si quisieras usar materialmente y para diseñar un proyecto más grande, en realidad puedes saltar a la carpeta de estilos que viene con el siguiente JS y luego modificar el tema y trabajar un poco más en detalle con la tipografía y qué tamaño o H, uno es, cuál es el grosor, el peso de la fuente, y cosas así Realmente puedes bajar y darle estilo a los componentes aunque sea una biblioteca de componentes. Pero por ahora, sólo voy a acceder a los estilos reales del elemento mismo para modificarlo a la manera que quiero que se vea. Entonces, para ver con el material I, cada componente de material Y tiene una propiedad especial llamada X. Y X es básicamente como estilo, como estilo en línea, pero es solo específico del material Y. Así que vamos a usar la Prop SX, y en realidad voy a establecer el tamaño de fuente para que sea, digamos tres Ram, tal vez cuatro. Después estableceremos el peso de la fuente. Pienso alrededor de 500. Bien, genial. A mi me queda bastante bien . Sigamos adelante. Entonces, lo siguiente que queremos hacer ahora, bien, nosotros, mirando hacia atrás en nuestra aplicación To Do, queremos considerar esta entrada, el botón Enviar, y lo real para hacer ellos mismos. Así que voy a empezar por crear el Todos y luego trabajar nuestro camino de regreso, saltando de nuevo a nuestra aplicación y de hecho voy a establecer esto en tres Rams para que coincida con el diseño el ejemplo un poco más Vamos a crear otro componente, call to do item. Vamos a usar lo mismo, R AFC, y ahí va a exportar nuestro componente Y entonces estamos, en lugar de importarlo de inmediato, voy a crear realmente algunos datos simulados. Así que voy a ir simulacro constante para hacer entonces solo voy a crear una matriz de cadenas, ese será nuestro simulacro. Para hacerlo hacer uno, hacer dos, y hacer tres. Y vamos a salvar eso. Y lo que voy a hacer debajo de la tipografía ahora voy a simular datos e importar nuestro artículo para hacer Entonces voy a, usando estos corchetes nacarados, voy a tomar nuestro simulacro para hacer y voy a mapear sobre ellos. Entonces, si recuerdas correctamente, ese mapa es una función que podemos usar en matrices para permitirnos iterar sobre los objetos o los elementos una matriz y luego extenderlos y hacer una especie de nuestra acción repetible en cada uno de ellos y hacer una especie de nuestra acción repetible en cada uno de Entonces vamos a mapear sobre cada uno de los tos y lo que queremos hacer, porque los mapas tienen que tener un retorno, vamos a volver a hacer ítem, vamos a decir eso. Ahora me está dando un aire aquí. Dice que me falta la clave Prop porque con los mapas se necesita tener una clave para que cada ítem sea identificable de forma independiente. Entonces lo que vamos a hacer es que vamos a poner la clave para ser el To do, porque sabemos que nuestro to Dos son únicos. Esto va a funcionar. Pero querrás configurarlo en un ID único, lo que haremos en el futuro. Lo siguiente que vamos a querer hacer aquí, así que nosotros, aunque veas a la derecha aquí, los artículos para hacer se han poblado por el número de veces. Entonces los Mac a Dos están presentes. Entonces hay tres por hacer. Hay de tres a dos elementos. Sin embargo, en realidad no han poblado con los datos. Y eso es porque no pudimos pasar los datos al componente real para hacerlo. Entonces sigamos adelante y hagamos eso. Volviendo al ítem do, lo que vamos a hacer aquí y aquí es donde Javascript y los tipos de scripts empiezan a diferir un poco. Si estás familiarizado con el Javascript reaccionante, sabrás que puedes crear un prop para hacer y luego pasarlo a tu componente real. Pero lo que no verías en el guión de trabajo es este error que estoy recibiendo. Por lo que dice elemento vinculante para hacer implícitamente tiene cualquier tipo. Y eso es porque no hemos especificado el tipo de para hacerlo. Al igual que en Javascript, todo tiene un tipo, ¿no? Todo en el tipo script tiene un tipo. Pero en el script tipo, quieren que definas o declares explícitamente ese tipo para que no haya confusión sobre lo que se está pasando, dónde se está pasando, etcétera Entonces, una forma de hacer esto en el tipo script es crear algo llamado interfaz de interfaz. Y puedes llamarlo como quieras, pero nosotros lo vamos a llamar apoyos Y dentro de esta interfaz ahora vamos a definir nuestros tipos. Ahora solo tenemos uno, pero podemos agregarle más según lo necesitemos. Así que vamos a crear, vamos a definir que hacer para ser una cadena. vamos a decir. Y luego fuera de este corchete aquí, vamos a poner dos puntos. Y vamos a escribir la palabra props para indicar que estos apoyos deben aplicarse a estos parámetros Para hacer es el tipo string. Si agregamos algo más aquí, no tendremos que ir y agregar más y más apoyos en la línea siete Podríamos simplemente agregarlos en las líneas 56.7, etcétera. Así que volviendo a hacer artículo, ahora queremos pasar el real para hacer. ¿Verdad? Porque sabes que ahora lo está esperando. Básicamente, sabe que para hacer artículo se necesita un hacer. Entonces necesita que usemos realmente esa propiedad en particular, que es una de las grandes cosas de la mecanografía No vas a cometer este tipo de errores. Como si esto fuera Javascript y nunca pasáramos a hacer, podríamos estar preguntándonos por qué nuestro hacer nunca está poblado, pero debido a que es tipo script, nos va a dar este error ya que estamos escribiendo nuestro código. Y así no vamos a tener estos como errores silenciosos fallando ya que nuestra aplicación se está ejecutando. Entonces todo lo que tenemos que hacer aquí es escribir la propiedad para hacer y luego pasar el para hacer y guardar eso. Y ahí tienes. Tenemos nuestro que hacer uno, hacer dos, y hacer tres, y así como lo hemos escrito en nuestro simulacro para que sepamos que estamos pasando los datos correctos. Impresionante. Lo siguiente que vamos a querer hacer es que realmente vamos a querer empezar a darle estilo a esto, bien. Porque tenemos algunas cosas que queremos que se hagan aquí. Queremos tener una pequeña casilla de verificación, queremos tener un pequeño botón de borrar Queremos tener este fondo gris. Ya sabes, un par de cosas que queremos lograr. Entonces, si nos dirigimos a hacer ítem, podemos comenzar a alcanzarlo. Entonces dentro de esto para hacer, lo primero que quiero hacer supongo es establecer ese fondo. Entonces déjame agarrar un color aquí. Entonces hagamos un RG, un color, vayamos a la imagen en color aquí y escojamos una especie de gris claro para nuestro fondo Voy a hacer esto y luego simplemente lo configuraremos como el fondo de nuestra inmersión usando ese estilo de color de fondo. Vamos a ponérselo a eso. Vamos a guardar esa ayuda por aquí. Genial, tenemos nuestro color de fondo. Lo siguiente que vamos a querer hacer es que probablemente vamos a querer agregar algo de espaciado debajo ellos y luego agregar ese radio de borde nuevamente. Entonces voy a agregar esto haciendo un margen inferior de digamos un Ram. De esa manera se agrega a cada nuevo que hacer eso , tendremos ese espaciado. Y luego vamos a añadir también, um, el radio del borde de, vamos a hacer 0.25 Ram. Y decir que lo último vamos a querer hacer aquí ahora es agregar algo de relleno solo para que haya un poco más de espacio a nuestro alrededor para hacer. Así que agrega el relleno y vamos a hacer tal vez un Ram también, solo por todas partes. Bien, genial. Entonces eso se ve bastante decente por ahora. Lo siguiente que creo que vamos a querer abordar son los elementos reales dentro, ¿verdad? Queremos tener esa casilla de verificación y queremos tener ese bote de basura Creo que la forma más fácil de agarrar la casilla de verificación, probablemente estaremos usando la casilla de verificación de material. Sí, solo queremos algo realmente básico como esto. Queremos que se desmarque al principio y luego se marque a medida que lo usamos. De hecho, podemos simplemente copiar esta línea de texto aquí mismo e incluirla. Antes de que podamos predoblarlo, sacaremos esta pieza que está etiquetada aquí por cómo quieren etiquetarla. Si queremos incluir una etiqueta con la casilla de verificación, podemos, pero vamos a darle estilo por separado Entonces vamos a agregar esa importación desde maduramente por casilla de verificación Entonces ifa por aquí tenemos que hacerlo increíble. Otra cosa que podemos hacer es envolver arte para hacer en un elemento tipográfico ya que es un elemento tipografía es un elemento Y guarda eso, genial. Entonces queremos agregar un bote de basura. No estoy seguro si tienen un ícono de bote de basura, pero si lo hacen, eso sería genial. Vamos a probar la basura. Impresionante, sí tienen un icono de eliminar, hecho podemos acceder a esto. Podemos copiar eso. Usa eso en nuestros componentes, me pregunto si. Sí, y podemos cambiar el color, lo cual es genial. Sigamos adelante y solo dejaremos esto, lo siento. Dejaremos caer el ícono en nuestro proyecto aquí. Y luego simplemente llamaremos a eliminar icono aquí. Que el genial, tenemos nuestro ícono de eliminar aquí. Y entonces deberíamos poder establecer el color en él. Entonces, si escribimos en color y lo ponemos, creo que probablemente va a ser peligro o error. Probablemente el error debería ser el color rojo. Si guardamos eso, genial. Tenemos un bote de basura rojo. Impresionante. Sin embargo, notarás que todos estos bajan directamente en línea recta, lo cual no es lo ideal. Lo que queremos hacer para arreglar eso es que en realidad vamos a configurarlo básicamente para que esté en una caja flexible transversal y luego los separaremos de ahí. Entonces vamos a crear una inmersión que envuelva alrededor de la casilla de verificación en topografía Porque si recuerda de nuestro ejemplo, queremos que se queden en el lado izquierdo y que el delete esté a la derecha. Entonces vamos a hacer esto más grande de un tipo flex box en display. Configura para flexionar eso. Lo mismo aquí, vamos a agregar ese prop, digamos que también estamos alineando elementos en el centro porque ahí están un poco torcidos Y aquí vamos a hacer lo mismo Genial, todo se ve bastante bien. Lo último que vamos a querer hacer es establecer esta inmersión superior en el contenido que se va a espaciar entre ellos. Queremos que básicamente este div y este icono de eliminar estén lo más separados posible. Y una cosa que nos va a ayudar en esto en realidad es establecer un mínimo con este contenedor exterior porque en este momento no hay mucho espacio entre ellos. ¿Verdad? Entonces para hacer eso vamos a ir a nuestro contenedor Para hacer y vamos a establecer un ancho mínimo, digamos 40 ancho de vista, uno, si eso, eso es bastante bueno. Entonces tenemos nuestro Para hacer, los tenemos poblando línea por línea Tenemos nuestro encabezado, que en realidad voy a agregar algo de margen al fondo de un solo Ram. Y tenemos nuestro que hacer, y nuestra casilla de verificación está marcando y desmarcando, pero ahora mismo ninguno de nuestros botones o íconos está haciendo Entonces sigamos adelante y hagamos que hagan cosas. Entonces, lo que también tendremos que hacer aquí para permitir esa funcionalidad es envolver nuestro icono de eliminar en un botón. Así que acabo de importar el botón del material. Yo, no lo he hecho. Ahora he importado el botón de la interfaz de usuario material, y ahora en realidad es un botón. Entonces, cuando pasas el mouse sobre él, ves que en realidad se convierte en un botón. Ahí hay un pequeño estado de hover, así que estamos seguros de que es un botón esencialmente Bien, entonces la otra cosa vamos a necesitar hacer ahora, bien, como en lugar de usar estos datos simulados, en realidad vamos a querer usar datos reales en algún momento. Entonces, para poder ingresar realmente los datos reales, vamos a necesitar una entrada, ¿verdad? Así que sigamos adelante y creamos nuestro insumo. Lo vamos a crear aquí mismo en este nuevo contenedor. Yo creo, creo material. Tengo entrada de texto. Opción de entrada de texto. Campo de texto de mayo. Sí, es un campo de texto y creo que queremos igual que el campo de texto esbozado realmente básico. Entonces nuevamente, solo voy a copiar la primera línea de las opciones aquí, la documentación, y pegarla en nuestro proyecto. Y solo voy a hacer una solución rápida para poder importar el campo de texto. Y si volvemos tripulación, genial, está ahí. Pero entonces también necesitamos un botón. Así que vamos a seguir adelante y crear un botón separado simplemente usando ese mismo componente de botón, y va a ser un botón Enviar. Genial. Entonces tenemos el botón y el Enviar uno al lado del otro. De hecho voy a seguir adelante y envolverlos en una inmersión solo para que estén contenidos, como todo lo demás. Y luego puedo agregarles estilo para que las cosas aparezcan como que quisiéramos con el div. Yo voy a hacer lo mismo. Voy a poner y hacer que sea una caja flexible. Entonces vamos a hacer Display Flex. Y ¿encuentras que estás haciendo el mismo tipo de patrón una y otra vez? Una cosa que podrías hacer es crear algo así como un componente de estilo que solo sea un contenedor que crea automáticamente una caja flexible cada vez. Y luego usa eso en lugar de usar divs básicos. Eso es algo que quizás quieras hacer si estás haciendo un proyecto más grande o simplemente estás pensando en optimizaciones Display Flex, agregaremos un margen inferior de una M. Si, se ve bastante bien. Yo quiero hacer con esto. Bueno, vamos también, lo siento, agreguemos algo de margen al lado de nuestro insumo ahí. Margen, ¿verdad? Volveremos a hacer una M. Y quiero hacer algo con este botón aquí para que quede un poco más de pie. Entonces si voy al botón LI de contenido, hemos esbozado, tenemos texto. Creo que lo que queremos hacer es tener un botón contenido. Así que en realidad voy a agregar este bit aquí que dice variante es igual contenida a nuestro botón. Vamos a guardar eso. Y ahora ves que tenemos un poco más de un botón contenido. Pero también notarás que es muy, muy alto. No sé si queremos que sea así de alto. Creo que eso podría ser por nuestra caja flexible. Entonces creo que lo que puedo hacer aquí es en realidad solo alinear los elementos al centro y eso debería arreglar la altura extra de nuestro botón ahí Vamos a probar eso. Di eso y genial. Sí, ha vuelto a esta talla normal. Pero sí, me gusta el botón, pero creo que sí quiero mantener un tema similar de estilo similar en todo el asunto. Entonces, lo que voy a hacer con el botón aquí es cambiar el fondo para que coincida con nuestro grado lineal en hot back over a nuestro archivo índice TSX Literalmente solo voy a agarrar este color de fondo aquí, copiarlo, regresar a nuestro elemento botón. Y dentro de la X prop que voy a añadir aquí, sólo voy a dejar caer eso y guardarlo. Ahí vamos. Nuestro botón tiene automáticamente, así que vamos a comentar esto por un segundo para que realmente podamos echarle un vistazo a esto. Era blanco y azul. Y luego cuando, déjame agregarlo de nuevo. Sigue siendo blanco, pero sí tiene este gradiente lineal que ahora funciona bastante bien. Lo siguiente que queremos abordar es la entrada real. En este momento, la etiqueta dice esbozado. Cambiemos eso. Entonces es un poco más rápido. Digamos a lo mejor, agrega nuevo punto y guarda eso. 10. Agregar estado global: Lo siguiente que vamos a querer hacer aquí es en realidad básicamente asegurarnos de que nuestros To Dos estén viviendo en alguna herramienta de gestión estatal. Vamos a querer considerar algo como Redox o Z. Stand personalmente, creo que Redux podría tener un poco demasiado repetitivo para este proyecto en este Porque en realidad es solo una app muy sencilla de hacer. No tenemos muchas acciones complejas de UI. Creo que solo un simple usar un en su lugar podría ser el camino a seguir. Si buscamos la documentación para el stand, podemos averiguar cómo instalarlo y hacer que funcione. Es como un sistema de gestión estatal más simple realmente. Entonces vamos a seguir adelante e instalar stand en nuestro proyecto que ahora que está instalado, vamos a seguir adelante y voy a crear una nueva carpeta aquí y voy a llamarla store. Entonces, si nunca antes has trabajado con la tienda, básicamente es solo un lugar donde tú, tu estado esencialmente vive en ella. pocas palabras, esta tienda la voy a crear llamada index y aquí es donde está nuestra tienda. Este va a ser nuestro archivo de tienda. Mirando su documentación aquí. Básicamente usa esto para crear realmente nuestro componente. Entonces voy a poner eso ahí y luego podemos seguir adelante y modificarlo para que se ajuste a lo que estamos haciendo. Entonces lo que esto hace aquí, así importa esta función crear desde z stand. Y creamos una variable aquí llamada store, que llama create. Y entonces básicamente esta es en realidad nuestra tienda aquí. Crea nuestra tienda. Los osos en este caso en realidad van a cambiar para ser todos. Va a ser una matriz vacía para empezar. Cuando vayamos a acceder a nuestros todos, aquí es donde van a estar viviendo. Simplemente, seguiremos adelante y agregaremos esto a nuestro entorno de espacio de trabajo. Así que ve a por eso. Son. Todo bien. Entonces, en lugar de aumentar la población, en realidad vamos a querer crear algo llamado agregar a. Esto solo va a ser lo que sucede cuando pulsamos Enviar y agrega nuestro To do a la lista de cosas. Vamos a establecer el estado en lugar de osos va a ser a lo que sea el estado actual de hacer en lugar de más uno que vamos a hacer, tal vez tengamos que ponerlo, envolverlo en una matriz, lo siento. Vamos a hacer cualquiera que sea el estado de a lo que fuera la matriz anterior y luego más el nuevo para hacerlo en lugar de estado más el nuevo oh, lo siento, ese era el lugar equivocado al que realmente vamos a pasar para hacer y más lo nuevo que hacer. Voy a decir que aquí me están dando algunos errores porque de nuevo, los tipos necesitamos poner los tipos correctos en este proyecto para que funcione correctamente. Entonces, de hecho, voy a crear un tipo más y voy a crear una carpeta más para el tipo. Entonces voy a crear una carpeta llamada types. Voy a crear un nuevo archivo, índice S, y ahí va a ser donde se creen todos nuestros tipos. De esa manera si creo un tipo, por ejemplo, no necesito recrearlo en cada archivo, crear una interfaz en cada archivo Solo puedo exportarlo y acceder a él en cada archivo para que podamos mantener nuestro código seco. Entonces esta es otra forma de crear un tipo. Voy a crear el tipo a hacer. Y al igual que la interfaz, nos permitirá escribir lo que sea con lo que estemos trabajando. Entonces yo, pensemos realmente en esto por un segundo aquí porque esto va a ser algo que podemos modificar algunas veces o podemos crear una vez y luego construir el código alrededor. Entonces, cuando estamos viendo nuestro ejemplo para hacer app, bien, queremos poder agregar el To do, ¿verdad? Entonces tiene que tener algún tipo de descripción o lo que sea que signifique Qué hacer es, como mencionaste antes, queremos tener una identificación única Entonces esa es también otra propiedad que nuestro hacer debería tener. Entonces queremos como una descripción y queremos una identificación. Probablemente queramos rastrear si está o no marcado o no Porque si queremos que persista cuando la página se recarga. No podemos simplemente tenerlo en vivo del lado del cliente, ¿verdad? Necesita vivir en alguna parte de la tienda. Eso no va a cambiar de recarga a recarga. Y luego finalmente queremos poder eliminarlos. Así que de nuevo, eliminar tipo de vidas con esa capacidad de identificación. Para eliminar lo específico a hacer, es bueno que tenga una identificación. Entonces creo que hemos establecido una especie de tres cosas que hacer. Debe tener o tres propiedades. Le vamos a dar una propiedad ID, que probablemente será una cadena. Probablemente vamos a hacerlo, lo siento, probab lo vamos a hacer un UUID Probablemente le vamos a dar una descripción. También va a ser una cuerda. Por último, le vamos a dar una propiedad comprobada. Entonces, ya sea que se revise o no, y eso va a ser un bolling. Entonces un verdadero o un falso. Permítanme seguir adelante y exportar este tipo para que podamos acceder a él en otros lugares. Y luego lo voy a importar aquí. A ver. Creo que en realidad podemos, oh, ya sabes lo que es. Necesito crear otra, sí necesito crear una interfaz más, pero esto es solo para la tienda, así que necesito crear un tipo para hacer tienda. Básicamente eso nos va a dar todas estas opciones. Y vamos a cambiar esto, pero eliminar a Do, básicamente necesitamos definir qué tipos son estos. Va a ser una matriz para hacer. Array van a importar el para hacer de tipos. Una matriz de Todd para hacer va a ser una función que tome en do, que es del tipo string En realidad sabes qué, esto no lo es, esto probablemente va a ser descripción. Entonces vamos a cambiar eso. Lo cambiaremos aquí. Y ahí lo cambiaremos. Lo guardaremos, luego regresaremos, y luego el final aquí. O quizá probablemente vamos a tener dos más. Entonces vamos a hacer eliminar para hacerlo así que esa va a ser nuestra eliminación. Vamos a tomar en un ID que es de tipo cadena y tratar de funcionar. Y luego, sí, así que vamos a cambiar esto para eliminar. Para ello sabemos que eso es lo que se supone que se acomoden por el momento. Bien, entonces estamos recibiendo un error aquí. Ah, porque no hemos aplicado nuestra tienda para actuar como nuestro estado a nuestra tienda con script tipo. Depende como a dónde vayan las cosas. Pero por lo general puedes ponerlo algo así como justo por la función aquí. Al igual que cuando estás creando un efecto de uso, lo pones justo después de las palabras use effect, pero justo antes del corchete abierto. Entonces creo que puedo ponerlo aquí mismo después de crear. Entonces voy a hacerlo, porque básicamente es un gancho. Entonces voy a escribir en Do store, voy a cerrar el soporte y voy a guardarlo y luego genial. Bien, los es han cambiado. Dice que me faltan las siguientes propiedades. Agregar a hacer. Oh, ¿sabes qué? Eso es solo porque lo he escrito de otra manera. Déjame hacerlo para hacer todo minúsculas. Sólo estaba diciendo que me falta quitado para hacerlo. Vamos a crear eso. Entonces vamos a hacer tomado una identificación y no va a devolver nada por ahora. Oh, no, eso no le gusta. No. En realidad, déjame arreglar, bien, déjame arreglar dos problemas. Voy a arreglar este anuncio para hacer. Lo que vamos a hacer aquí es que creo, oh, ¿sabes qué? Bueno, es un par de cosas diferentes. Un par de errores difieren que estamos llegando aquí. Entonces el operador spread realmente necesita suceder en estado para hacerlo, tal vez no lo volvamos a poner en una matriz. ¿Eso lo arreglará? Ahora, haz estado. adelante y terminemos de crear nuestro removido para hacer y luego podemos abordar este otro er, solo voy a copiar esto y pegarlo. La forma en que vamos a averiguar cuál hacer, estamos quitando para acceder básicamente a todos nuestros que hacer y queremos filtrarlos para que hagan eso que ya no estamos usando. Todo bien. Hacer que ya no queremos hacer se convertirá en lo que sea que hacer. Un estado para filtrar para lo que haga filtro para el estado ID Filtro Dom Dodd. Ford se da mainer me falta otro soporte aquí dicho filtro Ford Queremos, busquemos filtro. Bien. Vamos a un filtro derecho para no igualar al DID. Eso debería funcionar. Vamos a averiguar por qué estos errores están ocurriendo ahora. Muy bien, así que mirando esto, eliminado para hacer falta en tipo para hacer. Nunca agregar para hacer, pero se requiere en tipo para hacer cosa de tienda. Oh, ¿es ese el único error al llegar aquí? Claro. Todas mis comas están en el lugar correcto Despeje, quitado para hacer, de ambos. Echemos un vistazo solo al anuncio para hacer errores. Veamos qué está pasando aquí. Es para despejar pero nunca establecer. Entonces solo un pequeño error aquí es que en realidad solo necesitamos probablemente eliminar estos corchetes. Y luego en lugar de simplemente pasar la descripción, lo que realmente queremos hacer es crear una nueva que hacer, ¿verdad? Así que en realidad queremos crear un ID, ID único, que será una cadena. Y luego vamos a crear la descripción, que solo será la descripción. Y luego también vamos a agregar un estado de cheque. Entonces se va a verificar y va a comenzar como falso. Entonces el estado check, ahora no podemos simplemente pasar una cadena vacía por cada ID. En realidad vamos a querer un identificador único. Y para eso probablemente vamos a usar como una biblioteca UUID, que NPM tiene al menos una Vamos a usar este UID y básicamente nos va a permitir crear ID únicos para nuestro proyecto Entonces solo lo voy a instalar aquí. Y luego lo voy a importar en nuestra tormenta y salvar eso. Ah, y sabes qué, creo que sí necesito instalar y guardar a Deb Creo que a veces me sale este error. Bien, genial. Y entonces si todo lo demás falla, solo ciérralo y ábrelo de nuevo. Y a veces solo aclara el aire. Oh, vamos a darme una sugerencia aquí, déjame probar eso. Renuncia, vuelve en más tiempo. Todo bien. Se corrige el error perfecto. Bien, entonces queremos, eso debería funcionar. Y luego en vez de pasar una cadena vacía, creo que lo que sugieren aquí es que nosotros solo, sí, solo llamamos UID cuando lo necesitamos Entonces ID antes y luego solo lo llamaremos y eso debería crear un ID único para que nuestro nuevo lo haga. Impresionante. Entonces creo que estamos prácticamente establecidos en el frente de identificación. No creo que seamos ninguno para instalar más paquetes. Trabajamos con el stand Z ahora para acceder realmente al nuestro y agregarlos a nuestra lista y usarlos para hacer en lugar de también. Creo que podemos comentar techo para hacer ahora. Creo que hemos resuelto el error que estábamos teniendo que es realmente con el nivel superior al que vamos a, estamos basados en hacer. Muy bien, tan genial. Ambos deberían estar funcionando ahora. Optar por volver a hacer el artículo. Vamos a engancharnos a todo ahora y hacer que todo funcione de la manera que queríamos. Entonces supongo que tenemos que estar en hacer contenedor, así que queremos que el hacer. Entonces comencemos con eso. Entonces vamos a agarrar el para hacer. Tan constante de hacer es igual a este gancho aquí almacenar desde z stand. Y luego queremos agarrar al estado. Y en el estado los para hacer eso están presentes en ese estado, ¿verdad? Entonces esa pequeña matriz que creamos al principio, eso es lo que queremos agarrar para que podamos hacer estamos aquí D no es bowl, por eso que nos está dando ese error en realidad ocho correctamente. Todo bien. Es solo un error de tipo que estamos recibiendo porque Estado tiene cualquier tipo. Creo que hay algunas guías tipo script que podemos seguir aquí accediendo a nuestra tienda. ¿Qué no exporté la tienda? Exporta la tienda. Sí, tengo que exportar la tienda. De lo contrario, no podemos usarlo. Ese era el tema. Yo estaba como, ¿Por qué esto no funciona? Bien, vamos a cerrar esto un poco más de tiempo. Ábrelo de nuevo. Oh, todavía estamos recibiendo el error. Eso es muy interesante. ¿Qué decía? Tipo, pero está importando la tienda equivocada. La tienda. En realidad renombrar esto un poco menos confuso. Entonces vamos a llamar a esto To Do Store. Y voy a llamar a Store Store. Importé la tienda equivocada, así que necesito importar tienda de tienda. Entonces puedo hacer lo que intentaba hacer. Me preguntaba por qué no funcionaba. Bien, entonces Estado será Estado para hacer. Y ya ves cómo escribe script a ready crea como este tipo de documentación incorporada. Es realmente genial en ese sentido que puedas simplemente averiguar lo que te estás perdiendo esencialmente. Bien, así que esto será nuestro para hacer. Entonces deberíamos tener una lista de nuestras que hacer. Aún no tenemos nada que hacer, pero aquí será donde nuestro hacer vivir. Si sigo adelante y cambio a hacer a dos para hacer, no deberíamos tener datos porque aún no tenemos necesidad de hacerlo. Entonces eso en realidad está funcionando. Entonces sabemos o hemos roto completamente nuestra, nuestra app o, ya sabes, la hemos cambiado correctamente. Entonces voy a cerrar esto. Aquí me sale un pequeño error que el tipo de a hacer no es asignable a hacer Y eso es correcto porque en realidad To Do, originalmente lo habíamos definido como una cadena. Entonces lo que realmente tenemos que pasar es hacer descripción. Lo mismo con la llave aquí. Necesitamos en lugar de pasar el objeto de hacer, necesitamos pasar a Dod y guardar eso, tener esos errores Lo siguiente que vamos a querer hacer ahora es que vamos a querer conectar nuestro anuncio para que de hecho podamos agregar el tod que vamos a volver a sacar Vamos a estar en nuestro contenedor para hacer y luego vamos a agarrar nuestra función que es ad to do. Entonces vamos a hacer lo mismo. Usted almacena, almacena, soporte, estado. Y luego vamos a agarrar anuncio estatal para hacer. Vamos a salvar eso. Y entonces lo que vamos a hacer es que vamos a llamar a eso cuando se haga clic en el botón Enviar, ¿verdad Entonces podríamos hacer esto, en realidad podríamos hacerlo en Submit. Podemos crear, podemos convertir esto en un componente de formulario y en realidad podemos crear una función de controlador para esto Vamos a crear un manejador llamado Hand Submit. Queremos hacer dos cosas. pasar en un evento porque básicamente lo que vamos a terminar teniendo que hacer es apuntar a esta entrada y como el valor de esa entrada, así que queremos pasar en caso del click, cualquier tipo por ahora, que no es la mejor práctica, pero eso solo va a deshacernos del error que estamos a punto de golpear. Así que llame al evento, evite que la página se vuelva a cargar cada vez que la agreguemos para hacer Lo que vamos a hacer ahora es llamar a nuestro anuncio para hacer. Entonces entonces vamos a agregar To Do. Y el hacer eso que estamos agregando va a estar en ese evento, así que va a ser el final del evento. Vamos a tener que apuntarlo, ¿verdad? Por lo que se va a llamar a este manejador al presentar. En nuestro formulario, tenemos una propiedad especial llamada a enviar que básicamente cuando envías el formulario, en realidad llama a cualquier función a la que quieras llamar. Entonces nuestro onsubmit va a ser este mango para hacer. Entonces como resultado de eso, se va a pasar un evento a ese asa para hacer. Y así queremos sumar nuestro objetivo de hacer. Ese evento, va a ser objetivo del evento porque el formulario envuelve alrededor de múltiples elementos. Va a ser el primer elemento al que nos dirigimos. Y entonces va a ser el valor de eso. El valor del elemento va a ser lo que estamos pasando a nuestro anuncio para hacer, que es la descripción. Sé que probablemente fue mucho para tomar. Vamos a correr una vez más. Hemos creado un componente de formulario, hemos utilizado el elemento form. El elemento form tiene una propiedad incorporada llamada a enviar cada vez que se envía su formulario, eso es lo que sucede. Creamos esta función llamada manejado para hacer, lo que evita que default lo que impide que la página vuelva a cargar cuando presionamos el botón Enviar o enviar el formulario Y luego también agrega son para hacer. El anuncio a hacer va a tomar esa descripción, ese valor de la entrada, y luego lo va a enviar a nuestra tienda y darnos que hacer. Se va a crear un que ver con una nueva identificación y el estado de verificación de fallas que debería funcionar prácticamente. Lo último que vamos a querer hacer antes de seguir adelante y agregar necesidad de hacer es agregar el tipo a nuestro botón. Entonces quieres que el botón sea de tipo enviar. Hay dos formas de presentar esto ahora mismo. Puedes presionar Enter cuando añades tu valor, o puedes presionar Enviar. Queremos asegurarnos de que ambos estén funcionando correctamente. Entonces ahora el botón es escribir Enviar. El formulario sabe que oye, cuando presionan este botón, quieren enviar y debería funcionar en consecuencia. Lo que vamos a hacer es probarlo. Entonces sigamos adelante y agreguemos qué hacer y ver si aparece. Se presentó. Tenemos nuestro primero que hacer y nuestro anuncio está funcionando correctamente. Lo que vamos a querer hacer ahora es que nuestro remove funcione correctamente. Entonces eso es muy similar. Solo vamos a tener que hacerlo dentro de nuestro componente para hacer item. Así que saltando a hacer artículo va a seguir adelante y vamos a agregarlo a nuestro botón aquí Vamos a agregarlo al botón de borrar que hemos creado. Entonces lo primero es lo primero que tenemos que hacer. Entonces esto se va a quitar para hacer. Se retira para hacer almacenar nuestra tienda. Vamos a agarrar al Estado y luego vamos a hacer Estado. Quitar para hacer. Impresionante. Correctamente eliminado para hacer toma un ID, así que vamos a querer agarrar lo que sea el Dos ID que podamos eliminar el correcto que hacer con el botón. Ahora vamos a decir al hacer clic para eliminar. Queremos llamar remove to Do. Entonces queremos pasarlo a Hacer y guardar eso. En realidad, me va a dar un pequeño error porque cometí un pequeño error en el contenedor para hacer. De hecho cometí el error de pasar a hacer descripción. No queremos hacer eso. Queremos pasar el hoyo para hacer. Voy a dar esto para hacer el tipo de que hacer desde nuestra carpeta de tipos. Esa fue otra buena razón por que deberíamos haber pasado nuestras cuotas. Entonces te va a dar otro error aquí porque es como si todas estas cosas se estuvieran rompiendo ahora. Estamos, solo vamos a acceder a la descripción y todos nuestros errores deben estar hechos. Ahora de nuevo, esta es otra buena razón por la que existe el script de tipo. Al igual que aunque pueda parecer un poco molesto tener que resolver estos errores todo el tiempo, si no resolvemos el error, ahora pasaríamos unos minutos tratando de depurar por qué el error está ocurriendo incluso con el script Java. Porque no hay manera de saber que nuestro proyecto está fallando silenciosamente Si hemos hecho todo correctamente, hemos conectado nuestra mudanza para hacer, hemos pasado a hacer a ID. Agreguemos un segundo para hacer, solo para estar seguros si lo eliminamos, que es el correcto que estamos borrando. Y sigamos adelante e intentemos eliminar para hacer. Nadie funcionó a la perfección. Así que ahora somos capaces de agregar para hacer, somos capaces de eliminar does. Lo último que queremos hacer es probablemente sólo, creo, perdón. Las dos últimas cosas que queremos hacer son poder rastrear el estado de verificación. Y entonces si notas cuando refresque esta página, persista. Entonces queremos asegurarnos de que nuestra T esté persistiendo, la estamos usando. Abordar eso primero. Abordemos la persistencia primero Para abordar la persistencia, vamos a utilizar el middleware que se incluye con Entonces lo que vamos a hacer aquí es que vamos a importar, vamos a importar herramientas de profundidad y vamos a importar persisten. Y como puedes ver aquí, todo lo que han hecho es simplemente envolver su aplicación, envolver su tienda en herramientas en profundidad y persistir. Y eso solo permitirá persistir. Esto hace esto por creo, guardarlo en almacenamiento local. Se guardará en tu navegador almacenamiento local y luego cada vez que lo vuelvas a girar, deberías poder acceder a los mismos valores. Si tuviera que configurarlo en el almacenamiento de la sesión, entonces cada vez que su sesión expirara, entonces podría acceder a esos valores nuevamente. Adelante y simplemente envuelve nuestra aplicación en esto. Ponlo aquí, Ups, agarra a estos dos ahí Y entonces queremos llamar a set power function. También estoy cometiendo un error aquí. Necesito quitar este soporte aquí. Y entonces todo esto debería subir al salvo que creo que tengo un par más. Un par de demasiados, un par muy pocos soportes, dos más. Guarde eso. Todavía estamos recibiendo un error. Necesito pasar las opciones. Ese es mi bate. Como ves aquí, persiste el estado real con el que estás trabajando y luego crea algo para nombrarlo. Eso es porque cuando miras en tu aplicación, en tus de tools, cuando inspeccionas, en realidad verás un nombre presente para tu tienda. Entonces vamos a seguir adelante y darle un nombre como segundo argumento a hacer. Y guarda eso. Ponlo dentro del soporte derecho. ¿He añadido uno? No, no, no. Lo he puesto dentro de los paréntesis equivocados. Eso es lo que es aquí. Persistir no es asignable a un tipo para hacer tienda. ¿Por qué se establece un pase aquí? Ese es el problema. Así que solo necesito sacar esto, eso y luego eso realmente se deshará de nuestro, el problema de soporte adicional que estamos teniendo. Entonces era solo una flecha extra que no necesitaba estar ahí en un parámetro extra. Entonces sí, ahora que hemos configurado persisten. Entonces, si lo hemos hecho correctamente, volvemos a nuestra aplicación. Dale un poco de refresco ahí. Agregar a hacer refrescar la ración de página para arreglar esa hidratación. Lo que básicamente está diciendo esa hidratación es como lo que sea que construya no es necesariamente lo que estamos obteniendo que estamos persistiendo. Es como diferente cada vez. Lo cual es bastante justo. Entonces, lo que podemos hacer para arreglar esa hidratación en realidad es simplemente ejecutar un simple efecto de uso seguro de que lo que estamos viendo, es como una página de carga solo para asegurar que se cargue lo correcto. Entonces lo que vamos a hacer, vamos a correr aquí en nuestra página de índice y sólo vamos a crear cargado. El conjunto está cargado. A realmente simple de reaccionar. Y aquí sólo vamos a llamar al efecto de uso. Pero correr una vez y luego una vez que se ejecuta sólo vamos a establecer se carga a true. Entonces básicamente va a ver que, ya sabes, la página está cargada. Va a ver con qué datos estamos trabajando y luego va a ser verdad. Lo que queremos hacer ahora es simplemente mostrar esto para hacer contenedor solo cuando se carga es verdadero correctamente. No debemos obtener ningún error. No, estamos durmiendo en ella. ¿Por qué lo hacía antes? Esa es mi apuesta. Yo solo se lo dije a lo equivocado más tiempo. Sin errores de efecto de uso, sin errores de hidratación. Entonces pasemos a la siguiente pieza. Bien, entonces la pieza final que queremos hacer es tratar con nuestro estado de cheques, ¿verdad? Queremos asegurarnos de que cuando se marque y nos refresquemos, en realidad se quede verificado. En este momento, es solo que siempre son incumplimientos por defecto. Entonces, lo que tenemos que hacer para eso es establecer el estado de verificación dentro del estado. Cuando se comprueba, lo pasa al estado y eso persiste como parte del estado Entonces, lo que vamos a hacer ahora es volver al índice. Y aquí vamos a agregar una acción final. La acción de alternar marcada, tomar en el ID de lo que sea que hacer estamos trabajando con. Y entonces va a seguir la misma estructura donde se establece, hace algunas cosas más. Entonces lo vamos a sumar aquí para que no nos comunique el toggle de error que es básicamente lo mismo que eliminado. Para hacer en lo que respecta al script de texto es igual a la cadena. Entonces, qué queremos hacer aquí ahora, veamos. Queremos averiguar cuál de los dos está marcado o desmarcado Eso bien, vamos, sigamos adelante y llevemos nuestro estado punto a punto para hacer sobre cada uno para hacer. ¿Todo bien? Y si eso para hacer, ¿queremos hacer una de dos cosas Si lo hace igual a ID, quiere devolver, quiere devolver lo que sea el que hacer es. Entonces queremos devolver el ID y queremos devolver la descripción. Pero queremos establecer el para hacer lo que sea que no fuera a hacer. Sólo tiene que ser lo contrario de lo que era. Entonces se comprobó, debería estar desmarcado. Si estaba desmarcado, se debe verificar. Si ese no es el caso, solo queremos volver a hacer. Yo cometí un error. Sólo queremos establecer comprobado porque ya sabemos que es hacer para ser para hacer comprobado dos argumentos. Tenemos uno para poner esto en la zona equivocada, probablemente por eso me está dando un error. Oh, no. Sí, y trabajar si digo que sí, eso debería funcionar. Bien, genial. Así que hemos tomado nuestro, hemos pasado por y hemos mapeado a través nuestro Do para agarrar al individuo para hacer. Y estamos comprobando cada uno de esos que hacer, así que queremos ver si el DNI de ese Para hacer. Id ID propiedad del Para hacer. Coincide con la identificación que estamos pasando. Cuando comprobamos que duplicando el cheque, si coincide Entonces sí queremos pasar el resto del parámetro para hacer, pero luego para el parámetro check queremos pasar lo contrario de lo que era. Entonces, sea cual sea el parámetro check, queremos pasar, ya sabes, si era cierto queremos pasar caídas, etcétera Si no coincide con todos los otros dos Dos, solo queremos pasar eso para hacer y seguir adelante. Y así el camino así entonces vamos a realmente simplemente seguir adelante y probar esto. Así que voy a volver a hacer item y luego voy a pasar en Target, la palanca marcada. Voy a usar la tienda una vez más fecha. Hacer alternar marcado, guárdalo en la casilla de verificación. click solo quiero pasar en linea voy a alternar, checar, checar, y luego voy a pasar en el Todd y guardar eso Eso debería funcionar. Entonces si reviso esta página y actualizo la página, una cosa más tengo que hacer. En realidad tengo que acceder a la propiedad marcada en la casilla porque en este momento la casilla no sabe si se supone que debe ser marcada o no ¿Verdad? Estamos como una especie de asumir que lo sabría. No tiene forma de saberlo. Entonces lo que vamos a hacer aquí es acceder a la propiedad comprobada. La propiedad comprobada en realidad va a ser lo que tenga que hacer, checada es, así que eso es si debe verificarse o no. Entonces si actualizo, si lo reviso y luego actualizo es check state. Impresionante. Voy a hacer un pequeño retoque más con los estilos justo ahora que tenemos acceso a este prop en la Si está marcada, quiero hacer un par de estilos diferentes. Entonces quiero cambiar el color para que quede un poco más graduada. Entonces es algo así como, oh, hemos hecho esto, es como que ya no necesita ser tan prominente. Entonces quiero cambiar el color del Para hacer. Si hacer comprobado cambiar el color. A lo mejor algo un poco más oscuro que esto, tal vez eso. Y luego lo pasaremos. Queremos que el color sea lo que estaba destinado a ser, así que solo pasaremos un auto. Sí, ¿te refieres a marcar sin marcar? Fresco. Lo siguiente que quiero hacer es agregar un strike through. Literalmente llamándolo a través de nuestra lista, listo para eso es la línea de decoración de texto a través. Voy a hacer la misma comprobación. Voy a decir en es la propiedad a la que estoy apuntando, si a hacer se comprueba. Lo siento pregunta, quiero que sea una línea a través. Si solo quiero no tener un chequeo de decoración de texto, marca una línea a través. Impresionante. Entonces sí, prácticamente tenemos todo nuestro trabajo de aplicación para hacer. Como mencioné antes, en realidad se puede ver dónde está viviendo la tienda para esto. Si revisas la aplicación necesitas almacenamiento local aquí, puedes ver que en realidad tenemos o para hacer almacenar aquí. Entonces tenemos nuestro estado. Déjame mencionar esto un poco. Entonces tenemos nuestro estado que tenemos que hacer. Tienen sus identificaciones únicas, bueno, solo las 12, pero tiene una identificación única. Tiene la propiedad comprobada de true y tiene la descripción de hacer. Si lo desmarcamos, verá que cambia y que el hacer ya no tiene esa verdadera propiedad Tiene una propiedad falsa ahora, tiene la descripción que hacer y tiene la misma identificación. Entonces sí, nuestra aplicación para hacer está completamente funcionando. Lo único que queda por hacer es tal vez alojarlo. Pero podemos cubrir eso en una lección diferente sobre cómo alojarlo usando Verselle Siguiente S y Verselle en realidad están conectados. Creo que Versell creó la siguiente S, así alojada usando sell Pero vamos a cubrir eso en una lección diferente. Entonces sí, ojalá esto te sea de utilidad. Si tiene alguna duda, por favor deje un comentario en la sección de comentarios a continuación. Si disfrutas de esta lección, por favor deja una reseña también. Realmente ayuda, algo así como poner a la superficie esto a otras personas que quieran tomar el curso 11. CONCLUSIÓN: Conclusión, hablamos mucho en este video desde los orígenes de reaccionar hasta construir tu propia aplicación completamente funcional para hacer la aplicación usando el siguiente JS. futuro, deberías poder abordar cualquier proyecto de reacción que se te presente. Incluso cosas con tipo script para buscar algo cuando no estás seguro e ir al desbordamiento de pila según sea necesario Me encantaría ver cómo decidiste implementar tu aplicación Do. Así que por favor pon el enlace a tu código o al sitio alojado en la pestaña Proyectos y Recursos para que pueda ver todo el trabajo duro que has hecho. Leo cada comentario, cada reseña y miro cada envío de proyectos. Entonces, si tiene alguna pregunta, no dude en dejar un comentario en la sección de revisión a continuación o comunicarse conmigo directamente. Me encanta ver lo que ustedes tienen que decir. Consulte la página para obtener más información sobre eso, Conozca más sobre la codificación. Consulta los otros videos que tengo en mi página de perfil. También tengo videos en HTML y CSS disponibles en mi canal de Youtube y sitio web. Los vincularé a continuación y en mi perfil si estás interesado en aprenderlos también, y los veré en el siguiente.