Crea una lista de todo con funciones en React Js | Aymen El Kani | Skillshare
Buscar

Velocidade de reprodução


1.0x


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

Crie uma lista de todas as funcionalidades no React Js

teacher avatar Aymen El Kani, software engineer

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.

      Guia completo de React Js: dos fundamentos aos aplicativos dinâmicos

      7:18

    • 2.

      Visão geral das expectativas e pré-requisitos do curso

      4:15

    • 3.

      Construindo seu primeiro aplicativo ReactJs passo a passo

      6:35

    • 4.

      Adicionando estilos ao seu projeto do React

      2:31

    • 5.

      Entendendo o escopo do CSS no ReactJs

      2:39

    • 6.

      Entendendo conflitos de regras de CSS no ReactJs

      1:30

    • 7.

      Como escrever código JSX para o aplicativo Track e aplicar classes de CSS

      2:37

    • 8.

      Como dominar a estrutura e comentários do JSX para componentes claros e organizados

      3:21

    • 9.

      Compondo elementos de UI

      7:19

    • 10.

      Primeiros passos com o gerenciamento de estados: explorando o usoGancho de estado no React

      4:17

    • 11.

      Entendendo a comunicação de componentes: dominando o uso de objetos cênicos no React

      4:53

    • 12.

      Renderização dinâmica: construindo interfaces responsivas no React

      3:46

    • 13.

      Gerenciando tarefas e interação dinâmica no aplicativo web React

      8:25

    • 14.

      Criando uma caixa de verificação dinâmica com indicações visuais no React

      3:45

    • 15.

      Como aprimorar a conclusão de tarefas e o gerenciamento de estados em seu aplicativo React

      5:12

    • 16.

      Colocando as mãos na utilização do Gancho de efeito: adicionando filtros e estilo dinâmico

      10:05

    • 17.

      Primeiros passos com ícones do React: eleve sua UI

      5:13

    • 18.

      Adicionando navegação de várias páginas: implementação do DOM do roteador React

      6:08

    • 19.

      Como aprimorar a navegação: dominando o componente NavLink no ReactJS

      3:53

    • 20.

      Dominando o componente Link e criando uma página personalizada com 404

      2:35

    • 21.

      Gerenciamento de estado persistente no React: mantendo dados em várias rotas

      4:30

    • 22.

      Domine o data fetching no React: criando uma página Sobre com integração de API

      11:01

    • 23.

      Como dominar rotas aninhadas no React.js: navegando em estruturas complexas de aplicativos

      4:18

    • 24.

      Como praticar o usoRef: superalimentando seu projeto no React

      3:30

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

6

Estudantes

--

Acerca de esta clase

Visão geral do curso: neste curso interessante da Skillshare, vamos mergulhar no mundo do ReactJS, uma das bibliotecas JavaScript mais populares e poderosas para criar interfaces de usuário. Quer você seja um iniciante completo ou tenha alguma experiência em programação, este curso foi projetado para ajudar você a passar de um iniciante no React para um desenvolvedor confiante. Você vai aprender os fundamentos do ReactJS, enfrentar desafios de codificação do mundo real e construir um aplicativo dinâmico de gerenciador de tarefas do zero.

O que você vai aprender: ao final deste curso, você vai:

  • Domine os conceitos centrais do ReactJS, incluindo componentes, objetos cênicos e estado.
  • Entenda como criar um ambiente de desenvolvimento para o React.
  • Crie um aplicativo gerenciador de tarefas com recursos como criação, edição e exclusão de tarefas.
  • Aprenda a gerenciar a entrada do usuário e o envio de formulários.
  • Adquira as habilidades para gerenciar rotas dentro de um aplicativo ReactJS.
  • Melhore a funcionalidade do seu aplicativo com estilo de CSS ou Bootstrap.
  • Implementar operações essenciais de CRUD (criar, ler, atualizar, excluir).
  • Ganhe experiência prática no desenvolvimento do React.

Por que você deve fazer este curso: o ReactJS é um divisor de águas no mundo do desenvolvimento web, e veja por que este curso vale a pena:

  • Relevância: o React é amplamente usado por gigantes do setor como Facebook, Instagram e Airbnb. Aprender a usar o React abre oportunidades para cargos de desenvolvimento de front-end.

  • Eficiência: este curso foi projetado para ser conciso e impactante. Você vai adquirir habilidades essenciais em apenas duas horas, tornando-o perfeito para estudantes ocupados.

  • Praticidade: o aplicativo Gerenciador de tarefas que você cria é um projeto pronto para portfólio que demonstra suas habilidades no React para empregadores ou clientes em potencial.

  • Aprendizagem interativa: acreditamos no aprendizado prático, então você vai programar ativamente junto comigo, reforçando seu conhecimento.

Para quem é este curso:

  • Aspirantes a desenvolvedores web que queiram aprender ReactJS do zero.
  • Desenvolvedores de front-end que queiram expandir seu conjunto de habilidades com o React.
  • Indivíduos que preferem experiências de aprendizagem focadas e eficientes.
  • Pessoas que buscam criar um projeto prático para seu portfólio.

Materiais/recursos: para participar plenamente deste curso, você vai precisar de:

  • Um computador com conexão à internet.
  • Um editor de código (por exemplo, Visual Studio Code, Sublime Text).
  • Entusiasmo e vontade de aprender.

Junte-se a mim nesta jornada no ReactJS, e vamos criar algo incrível juntos!

Conheça seu professor

Teacher Profile Image

Aymen El Kani

software engineer

Professor
Level: All Levels

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. Guía completa de React Js: de los fundamentos a las aplicaciones dinámicas: Hola, ahí, futuros desarrolladores web. Soy hombre y Conny, su amable instructor y guía en este emocionante viaje de React Gas En este corto y dulce curso, vamos a construir algo increíble juntos. Pero antes de sumergirnos en el proyecto, déjame decirte qué hay en la tienda para ti. Comenzaremos con los fundamentos, asegurándonos de que tenga una base sólida como roca y reaccione Gas Entonces saltaremos a la mano en la codificación donde construirás el proyecto del mundo real desde cero. Al final de este curso, tendrás las habilidades y la confianza para crear tus propias aplicaciones GAS reales e impresionar a los empleados o clientes potenciales Este es el proyecto que vamos a construir juntos. Es una aplicación de seguimiento de tareas donde los usuarios pueden crear nuevas tareas usando este formulario. Cuando creen tareas, la tarea aparecerá en este contenedor. Entonces déjame mostrarte cómo podemos hacer eso. Digamos que queremos crear una tarea. Puedo presionar enter en el teclado o presionar este botón aquí mismo. Entonces vamos a aprender a escuchar eventos de teclado y a escuchar eventos de botones HTML. Ahora voy a presionar enter en mi teclado. Y ahí tienes. La tarea un elemento se renderizó dinámicamente o apareció en este contenedor. Ahora los usuarios pueden verificar este elemento si completaron la tarea. Al presionar esta casilla de verificación, se volverá verde, lo que indica que este elemento de tarea se ha completado Pueden agregar múltiples elementos de tarea, como la tarea dos, la tarea tres, Ahora, puedes notar que tenemos un conteo aquí que cuenta el número de elementos de tarea en la lista. Cada vez que agregue un nuevo elemento de tarea, este número aquí mismo aumentará dinámicamente, mostrando el número de elementos de tarea en tiempo real. Ahora podemos filtrar entre tarea completados y pendientes. Si cambio a completado, solo veremos las tareas completadas, que en nuestro caso, solo la tarea un ítem. Si cambiamos a artículos pendientes, veremos todos los elementos de tarea pendientes en este contenedor. Puedes eliminar elementos desde aquí, y si cambias a todos, notarás que se eliminó el elemento de la tarea dos. Así que vamos a aprender a eliminar elementos y renderizar el resultado dinámicamente a los usuarios. Puedes verificar varios artículos si quieres. Ahora, esta aplicación también tiene dos páginas, la página de inicio y la página Acerca de. Podemos navegar entre estas páginas usando los botones de navegación del encabezado. Si cambio a la página Acerca de, obtendremos esto simple sobre paté. Notarás que la ruta de RO ha cambiado para cortar. Déjame hacer esto otra vez. Como pueden ver, la UO ha cambiado. Esta página contiene una pequeña descripción de lo que trata esta aplicación. Como puedes ver aquí, esta aplicación es solo una aplicación de seguimiento simple para ayudarte a mantenerte organizado y administrar tu tarea de manera eficiente. Es una app sencilla, pero contiene muchas características. Por ejemplo, tenemos aquí un estrangulador de programación. Estamos obteniendo esta broma de una API externa. Siempre que cambiemos de la página de inicio a la página anterior, vamos a buscar una nueva broma Aprenderemos a obtener datos de una API externa y renderizar los datos dinámicamente dentro de nuestra aplicación Esto sucederá cada vez que cambies entre páginas o actualices esta página. Si lo refrescas, obtendrás un nuevo estrangulador. Ahora puedes notar que tenemos un enlace en la parte inferior aquí diciendo conocer al equipo. Si haces clic en él, aparecerá una lista de nombres. Estos nombres se refieren a los desarrolladores que trabajaron en esta aplicación de seguimiento de tareas. Ahora, también se nota que la ruta de URL ha cambiado, y tenemos aquí el equipo de barra diagonal hacia adelante al final Déjame hacer esto otra vez y mantener tu ojo en la URL. Como pueden ver, tenemos un nuevo estrangulador aquí tráelo, y ahora vamos a hacer clic en este enlace, y la URL se ha actualizado a alrededor de cuatro equipos de Slash Esto es lo que llamamos y reacciona una ruta anidada. Las rutas anidadas le ayudan a crear diseños anidados sin actualizar la página web Como puedes ver, esta aplicación está llena de características, y aquí hay muchas cosas que aprender. Por lo que contiene todo lo necesario para construir una aplicación web interactiva. Tenemos formularios, tenemos botones, podemos interactuar con el teclado. Podemos filtrar elementos de tarea, Sí. Podemos cambiar entre páginas, y los artículos no desaparecerán del contenedor. Así que vamos a aprender eso también. Puede tener renderizado dinámico. Esa es también una característica muy valiosa en una aplicación web moderna. Podemos cambiar entre páginas, obtener algunos datos de una API externa y tener diseños anidados y rutas anidadas Entonces, como puedes ver, puede aparecer como una aplicación sencilla, pero tiene muchas cosas que ofrecer. En realidad, esto es todo lo que necesitas para comenzar a crear aplicaciones web desde cero. Entonces, después de terminar este curso, tu progreso solo dependerá tu imaginación y simplemente de tus habilidades CSS. Porque esto, este curso te hará comprender qué es reaccionar GS, qué es GSX, cómo reacciona GS funciona detrás de escena, y también aprenderás a crear estas increíbles características en una Ahora tal vez se esté preguntando por qué este curso es tan corto, registrándose en apenas alrededor de 2 horas. Bueno, esa es una gran pregunta. Verás, este curso está diseñado pensando en tu tiempo y aprendizaje. Creo en ponerte al día forma rápida y eficiente. Distorsiono los conocimientos esenciales que necesitas para dominar el IS y construir una aplicación de seguimiento de tareas Sin pelusa, sin relleno, solo las cosas buenas. Sé que tu tiempo es valioso, y eso lo respeto. Al mantener el curso consiste, ahorrarás tiempo y aún así obtendrás las habilidades para crear tus propios proyectos RGS sin sentirte abrumado Entonces, si estás interesado en construir esta aplicación conmigo, solo tienes que inscribirte en este curso, y comencemos el viaje. 2. Expectativas y requisitos previos del curso: Hola, sus futuros desarrolladores reaccionan. Bienvenido a nuestro curso de Guía Completa de React GAS desde fundamentos hasta aplicaciones dinámicas En este emocionante viaje, nos sumergiremos en los conceptos básicos de reaccionar y exploraremos cómo juega mano con Java Script para crear impresionantes interfaces de usuario. Así que comencemos. Lo primero, tercero. Vamos a entender qué es reaccionar y por qué se ha ganado saxo inmensa popularidad en el mundo de React es una poderosa biblioteca de scripts Dava que nos permite construir interfaces de usuario cautivadoras Pero aquí está el pateador. React no funciona de forma aislada. Está estrechamente integrado con el guión Dava. React aprovecha la magia de JavaScript bajo el capó para dar vida a nuestras interfaces de usuario Esto significa que tener una comprensión sólida de los conceptos de JavaScript va a ser increíblemente útil a medida que avanzamos por este curso. Ahora, antes de entrar en la emocionante palabra de acción, cubramos rápidamente algunos requisitos previos y herramientas que necesitará para aprovechar al máximo las herramientas Si ya estás familiarizado con HTML, CSS y JavaScript, has tenido un gran comienzo. Estos lenguajes fundamentales serán útiles a medida que exploramos las capacidades de Act En cuanto a las herramientas, usaremos código de Visual Studio para nuestras aventuras de codificación y no DS para ejecutar nuestras aplicaciones. No necesitas tener ninguna experiencia con NGS. Lo único que se requiere es poner los NOG de su sitio oficial Ahora, no te preocupes si eres nuevo en estas herramientas, te guiarán en cada paso del camino. Ahora, estoy seguro de que tienes curiosidad por saber por qué act se usa tan extensamente en el mundo real. Permíteme compartir un ejemplo rápido para alimentar tu motivación. Imagina que estás navegando por un sitio web dinámico con una plétora de elementos interactivos, botones, foros, animaciones Estos elementos necesitan responder rápida y sin problemas a sus acciones. Aquí es donde reaccionan las campanas. Es un proceso de renderizado eficiente y un uso inteligente del dom virtual, garantizan experiencias de usuario de prueba relámpago, lo que hace que React sea una opción ideal para crear, atraer y responder a tiplicaciones Entonces ahí lo tienes, un vistazo tienda Watson para ti en este ex viaje Prepárate para desentrañar los misterios del acto, sumergirte en la palabra de JavaScript y construir impresionantes interfaces de usuario que dejen impactos duraderos Estoy encantada de guiarte a través de cada paso del camino. 3. Crea tu primera APP de ReactJs paso a paso: Comienza creando una carpeta y ábrela en VSCO. Puedes nombrar la carpeta como quieras. Nombré Mine Task Tracker desde entonces, eso es lo que vamos a construir Lo primero que tenemos que hacer es abrir la terminal. Para ello, puede hacer clic en el icono de la terminal aquí. O navegue hasta el menú y seleccione terminal. Después haga clic en nueva terminal. Una vez que la ventana del terminal esté abierta, asegúrese de que no tiene ninguna instalación GS. Puedes hacerlo ejecutando el siguiente comando para verificar su versión. Si se muestra la versión, significa que no tiene GS instalado. De lo contrario, deberá desestatarlo desde el sitio web oficial A continuación, vamos a ejecutar un comando para crear nuestra primera app react GS. Esto se puede hacer usando PM, PMPM o Yn. En este caso, usaremos el comando Create React app, que es una herramienta que configura un nuevo proyecto react GS con una estructura y dependencias preconfiguradas Si no tienes Yarn instalado, necesitas usar APX create React app y agregar un nombre de aplicación personalizado Alternativamente, puedes usar un punto para indicar que quieres crear la app react en la carpeta Coan Voy a usar Yarn ya que es más estable que PMPM o MPM Pulsa enter y deja que suceda la magia. El comando ha creado con éxito una aplicación de cuatro GS lista para que podamos trabajar con ella. Bastante genial, ¿verdad? Aquí está la estructura del proyecto. La carpeta SRC contiene el código fuente de la aplicación. La carpeta pública contiene activos estáticos y el archivo HTML de punto índice es el punto de entrada para tu app. Aunque AGS utiliza solo un archivo HTML, no significa que estemos limitados a una página. Podemos crear múltiples páginas o rutas usando JavaScript. Cada ruta utilizará JavaScript para renderizar código HTML específico basado en la ruta URL. Cada pieza de código AML que escribamos se renderizará dentro del elemento TF con la raíz ID Ahora dentro de la carpeta SRC, encontramos varios archivos siendo el más crucial el índice DGS Este archivo es importante porque emplea Dava Script para renderizar todo nuestro código de proyecto en el elemento DV con la raíz ID Para decirlo simple, reaccionar es como tu plano para una casa Mientras reacciona Dom sirve como el equipo de construcción que transforma ese plano en el edificio real Es la herramienta que toma sus componentes de reacción y los muestra en la web, haciendo que su sitio web cobre vida El archivo Index D GS, podemos eliminar esta línea aquí mismo. El informe web vitals es una herramienta reacción utilizada para medir y reportar el rendimiento del sitio web No obstante, no lo necesitamos en este momento. Siéntase libre de eliminarlo junto con su declaración de importación. También eliminemos este archivo dentro la carpeta SRC ya que no necesitamos ejecutar ninguna prueba Nuestro enfoque está en la propia Reac TS. Pasando al archivo Abdo GS, encontramos una función que devuelve sintaxis GSX En react, no lo llamamos sintaxis HTML se conoce como GSX, que significa Javascript XML. GSX combina HTML y JavaScript, lo que le permite escribir código de interfaz de usuario que es fácil de leer y alimentado por JavaScript. La función Abdo GS es un componente. Ahora en react, un componente es una función que actúa como un bloque de construcción para su interfaz de usuario. Piénsalo como armar un set de lego. Cada lego brack es análogo a un componente. Estos componentes son bloques de construcción reutilizables que encapsulan I y funcionalidad, haciendo que su código sea modular y mantenible Ahora, después de esta breve introducción a los archivos y estructuras GS de reac, ejecutemos la aplicación y veamos cómo se ve en el navegador En la terminal, ejecute el comando PM start. Esto ejecuta el script definido en su paquete do archivo JSON y/o la sección de script con la clave start Este script generalmente usa herramientas como paquete web o por paquete de pernos y transpire su código Entonces este comando inicia un servidor de desarrollo y cargar automáticamente la aplicación cada vez que realizas cambios Si el archivo Package D JM es nuevo para usted, piense en ello como un centro de control para las dependencias de sus proyectos Enumera las herramientas externas y bibliotecas que tu app necesita. Estas dependencias se gestionan mediante APM, que es como un almacén digital para código Al examinar el archivo Package DSO, los pers pueden comprender configuración de su aplicación y garantizar la consistencia Una vez que hayas ejecutado el comando, se abrirá una pestaña del navegador con la URL Local host 3,000. Un servidor local accesible solo para su máquina. Verás el logo de GS girando con algunos textos y estilos. Ahora volvamos aquí y eliminemos la declaración de importación para el logotipo de Rags Elimina todo el código GSX dentro de la función del componente app, dejando solo la sentencia return Además, elimine el archivo SVG del logotipo de la carpeta SRC ya que ya no es necesario Dentro del archivo Apo GS, tenga en cuenta que el componente app es una función. Cada función componente en AGS debe comenzar con una letra mayúscula para distinguirlos de otras funciones de JavaScript. Ahora, cada componente react siempre debe devolver algún código GSX Puede devolver directamente GSX como un elemento Dev o encerrarlo Ahora bien, si estás familiarizado con HTML y tienes algún conocimiento de las funciones del grupo Javas, el resto de ACTGS será sencillo Ahora dentro de este Dv, agreguemos un texto diciendo hola VGS. Guarde el archivo. Se volverá a renderizar automáticamente ya que el comando de inicio de MPM todavía se está ejecutando y monitoreando los cambios Cuando guardes tus cambios pulsando el control S, verás las actualizaciones en el paté Todos los elementos HTML han sido reemplazados por este tiff. 4. Añade estilos a tu proyecto de React: Hemos cubierto cómo renderizar código SSML usando la sintaxis GSX dentro del Pero ¿qué pasa con los estilos? En el archivo Abdo gS, notarás que estamos importando un archivo CSS llamado Abdo CSS ubicado en la carpeta SRC Este archivo contiene código CSS regular. Si bien no estamos importando explícitamente el código CSS en el archivo apto GS, le estamos dejando saber a ReAGs que cuando renderiza el componente ABDogs en el signo del cliente, también debe buscar el archivo CSS y usarlo como hoja de estilo para Sin embargo, para los fines de este curso, no usaremos el código CSS específico. Siéntase libre de eliminarlo por completo. Pasando al archivo Index DGS, también estamos importando otro archivo CSS llamado index CSS Al crear un componente en IGS, es una buena práctica nombrar el archivo CSS correspondiente con el mismo nombre que el nombre del archivo de componentes Dentro del archivo DSS Index, encontrarás estilos para el cuerpo y otros elementos similares a los anteriores Tampoco vamos a necesitar este código. Adelante y despeja este expediente. Ahora, volviendo al archivo Abdo GS, vamos a introducir algunos elementos GSX aquí, pero no profundizaremos en los detalles de CSS Después de todo, este es un curso AGS, no un curso CSS. Para agilizar este proceso, he preparado un archivo CSS Abdo y un archivo CSS de punto índice para que los descargues y uses Puedes ubicarlos en la sección de recursos de esta videoconferencia. Una vez que hayas descargado los nuevos archivos CSS, copia el código del archivo CSS de secuestro y pegarlo aquí El código incluye clases como contenedor de rastreador de tareas y otras, junto con consultas de medios para garantizar la respuesta de nuestras aplicaciones en varias pantallas Repita lo mismo para el índice al archivo CSS. Pega también el código que proporcioné en este archivo. He aplicado estilo al cuerpo y al elemento raíz, que existe dentro del archivo HTML de punto índice. Recuerda, aquí es donde se renderizará todo nuestro código. He configurado el elemento raíz para que se muestre como una cuadrícula con 12 columnas y 12 filas. Hacia abajo, hacia abajo, encontrarás tiempos para la barra de desplazamiento de nuestra aplicación web 5. Comprende el alcance de CSS en ReactJs: Antes de avanzar en la construcción de este proyecto, tenemos que hablar del concepto muy importante en react GS. GSS scoping, que está dando a cada componente su propio patio de juegos de estilo privado. Es un mecanismo que asegura que los estilos que definas para un componente quieren y afectan intencionalmente a otro componente. Cuando escribe CSS para un componente específico, esas teselas tienen el alcance de los límites de esos componentes Esto significa que las teselas que aplique a una clase dentro del archivo CSS del componente solo se aplicarán a los elementos dentro de esa salida de componentes renderizados. Actuamos para lograr este alcance mediante el uso de una técnica llamada módulos CSS o CSS en bibliotecas GS En nuestro caso, estamos trabajando con módulos CSS. Todos estos archivos CSS se denominan módulos CSS. Cuando importas el archivo CSS a un componente, los nombres de clase dentro de ese archivo CSS se transforman de una manera que se vuelven únicos para ese componente. Esto evita clases de nombre de clase y garantiza que su estilo no se declarará en otras partes de su aplicación Imagínalo como tener habitaciones separadas para diferentes actividades en tu casa. Cada habitación tiene su propio conjunto de muebles y decoraciones. Del mismo modo, su componente react tiene su propio conjunto de estilos que no interfieren con los estilos de otros componentes. Este enfoque hace que su base de código sea más modular, mantenible y propensa a conflictos de estilo Podemos diseñar tus componentes sabiendo que sus estilos están aislados y no impactarán accidentalmente en otras partes de tu app. Ahora, a medida que reúne componentes usando índice a archivo DS, react mantiene la magia del estilo en marcha. Incluso si tienes una regla de estilo general en Index to TSS y una regla de estilo específica en el CSS de rapto React sabe cómo manejarlos. El estilo más específico suele tomar la delantera. Piensa en ello como tener un plan maestro para tu casa. Los detalles en cada habitación no chocan con el diseño general. Entonces mientras te sumerges en reaccionar, recuerda que cada componente es un bloque de construcción con personalidad propia. Viene con su propio archivo JavaScript y su propio archivo CSS. Y adivina qué, reacciona, asegúrate de que tus estilos se comporten muy bien dentro de su componente, creando una app web armoniosa y organizada. 6. Comprender las reglas de la CSS en conflicto en ReactJs: Oye, profundicemos en reaccionar, y es magia de estilo. Mago estás decorando una habitación. Empiezas con un estilo base. Pero luego le agregas algunos toques personales. React funciona de manera similar con su CSS. Digamos que tienes una regla en el índice dos SS que establece el margen corporal en cero. Pero espera. También hay una regla en abdosi SS que establece el margen corporal Ahora, ¿quién gana? Es como una competencia amistosa entre los dos. En este show down, react sigue algunas reglas. Si dos reglas tienen el mismo poder, lo llamamos especificidad. La regla que viene después gana. Es como decidir quién recibe la última porción de pizza. Si índice punto CSS grita, margen cero, y Abdo CSS dice tranquilamente, margen tres, el último recibe el foco React se asegura de que los detalles en su CSS componente tengan prioridad sobre los estilos globales. Ten en cuenta a medida que creas tu app react, su componente trae sus propias reglas de estilo y react mantiene la pieza al decidir qué reglas deben brillar en caso de conflicto. Pero para una experiencia de desarrollo fluida, hay que evitar agregar estilos a los elementos HTML directamente usando un selector de elementos, en su lugar usar clases. 7. Escribe código JSX para la aplicación de seguimiento y aplica clases de CSS: Archivo Abdu TS, reemplacemos este div por otro. Además, muévase a la mitad del nuevo div y luego devuelva una nueva línea. Este nuevo div servirá como contenedor principal para nuestra app de trazador Necesitamos aplicarle una clase CSS específica desde el archivo CSS de Abdo llamado Contenedor de trazador de tareas Copia el nombre de la clase y dentro de la etiqueta de apertura del div dentro del componente Abdo gs, aplica la clase CSS usando el atributo class name En HTML regular, este atributo se acaba de nombrar class. Pero en Rañas, es el nombre de la clase, y recuerda usar el caso Camel Después del signo igual, dentro de los códigos dobles más allá la clase de contenedor de seguimiento de tareas. Es similar a escribir HTML normal, pero presta atención al nombre del atributo y siempre usa Camel case para atributos como nombre de clase. Si guarda esto, asegúrese de iniciar la aplicación ejecutando NPM start en la terminal Luego abre el navegador y verás un agradable contenedor azul en medio de la página. Este contenedor contendrá la aplicación de seguimiento junto con sus principales funcionalidades, y también notarás la barra de desplazamiento de estilo a la derecha. Tenga en cuenta que aumenté ligeramente el tamaño del elemento contenedor en la pantalla usando la herramienta de zoom cromada. Ahora, volviendo al código, insertamos un elemento de tarea dentro de este contenedor. Agrega el siguiente código GSS dentro de este div. El primer div es un contenedor de elementos de seguimiento de tareas, y el div interno es el elemento real del rastreador de tareas. Esto renderizará la tarea uno dentro del contenedor azul. A medida que avanzamos con el proyecto, tendrás una lista de elementos de tarea como la tarea uno seguida de la tarea dos. Sin embargo, queremos escribir manualmente cada elemento. De lo contrario, usaremos tender A steml Javascript y CSS. En su lugar, usaremos react para renderizar dinámicamente la lista por nosotros. Cubriremos cómo hacerlo en las próximas lecciones. Ahora centrémonos en dar forma la estructura principal de nuestro rastreador de tareas a. solo un resto rápido, cada vez que guardemos el archivo de la aplicación, punto índice S se ejecutará nuevamente, haciendo que el componente de la aplicación se renderice. La salida final se mostrará dentro del elemento raíz en el archivo HTML de punto índice. Este archivo será servido al cliente cuando acceda a nuestro servidor web, que en nuestro caso es host local 3,000. 8. Domina la estructura y los comentarios JSX para componentes claros y organizados: La aplicación de seguimiento de tareas ahora requiere un formulario con un campo de entrada. Este formulario nos permitirá agregar dinámicamente elementos de tarea a la lista de tareas usando react. Permanecer dentro del componente de la aplicación incorporará la entrada desde el interior del contenedor del rastreador de tareas. Para lograrlo, agregue un nuevo DF y establezca su nombre de clase en un contenedor de tareas. Dentro del DF coloca el campo de entrada en un botón para agregar nuevos elementos a la lista. Sin embargo, prefiero separar el formulario de entrada real del contenedor del rastreador de tareas y mantener el contenedor dedicado únicamente a la lista de elementos. Para lograrlo, tomaré esta inmersión y la colocaré encima del contenedor así. Ahora, cuando surge un problema en un componente de reacción, es esencial asegurarse de que todos los elementos GSX estén encerrados dentro de un solo elemento contenedor Esta práctica ayuda a reaccionar a mantener una estructura organizada. Piense en ello como empacar para un viaje. No querrás llevar numerosos artículos sueltos. Lo colocarías todo en una bolsa o maleta para mantenerlos juntos. De igual manera, en el ámbito de reaccionar, aplicamos un concepto similar. Puedes encerrar tu código GSS dentro de un elemento HTML como un div o una sección O incluso una etiqueta vacía como esta. Este elemento envoltorio no necesita hacer mucho. Su propósito es satisfacer los requisitos de reacción. Por ejemplo, si su componente incluye varios elementos como encabezados, párrafos y botones, y encerrarlos todos dentro de un solo elemento t o sección Esto se adhiere a la guía de un elemento envoltorio, lo que permite reaccionar para comprender la estructura de sus componentes de manera efectiva Considérelo como ofrecer reaccionar un contenedor para alojar sus elementos GSX, lo que le permite comprender Ahora supongamos que deseamos insertar comentarios para aclarar el propósito de su desarrollo. Al tratar con GSX, notarás una técnica interesante La barra regular doble hacia adelante para los comunes de una sola línea o los comunes de varias líneas no funcionará En cambio, empleamos un método de palanca, que es Encierra tu comentario dentro dos llaves y empleamos la sintaxis de comentario multilínea Notablemente, estas llaves también pueden contener código JavaScript, etiquetando la adición de contenido dinámico a su aplicación Por contenido dinámico, quiero decir, alterar el código GSX en función condiciones específicas sin recargar la aplicación Profundizaremos en cómo aceive esto en las Dentro de esta sección, lección ser un comentario para pasar que la inmersión a continuación es una tarea para. Copia este comentario y pégalo encima del contenedor de tareas, Modifique el nombre a contenedor de tareas. Y por último, agregue otro comentario al contenedor del elemento de tarea, asígnele el nombre Elemento Tareas. esta manera, de todos modos, revisar nuestro código comprenderá la estructura y los objetivos de la aplicación. Siéntase libre de seguir estos ajustes para mejorar la claridad de su estructura de código. Si tiene alguna duda, todos necesitan más asistencia, no duden en preguntar. 9. Elementos de interfaz de usuario que componen: Sigamos desarrollando nuestra forma de tarea. Para comenzar agregue un elemento de entrada con una etiqueta de cierre automático. Establezca el atributo type en texto, proporcione un marcador de posición que diga una tarea y asigne el atributo de nombre de clase Asegúrese de no usar tases en los nombres de atributos ya que los atributos de reac gs no incluyen impuestos ni puntuaciones inferiores El nombre de clase para el elemento de entrada será una entrada de tarea. Debajo del campo de entrada, agregaremos un anuncio etiquetado de Patton con el nombre de clase una tarea Bt N. Short for button Después de guardar esto y asegurarte de que tu app se esté ejecutando, abre el navegador. Verás la forma, aunque sin ningún estilo. Pero no te preocupes, abordaremos esto enseguida. Me gustaría pasar un punto importante. En palabra de reaccionar, la organización es clave. Piense en ello como construir un rompecabezas complejo. Es pieza necesita su lugar diseñado para crear la imagen completa. Del mismo modo, en react, desglosamos nuestro código en unidades más pequeñas llamadas componentes. Estos componentes son como distintas secciones de tu app, como un encabezado, una barra lateral o un pie de página. Al organizar nuestro código de esta manera, establecemos una estructura que es fácil de comprender, mantener e incluso usar en diferentes partes de nuestra Así que recuerda, en react, divide tu código en componentes y observa cómo tu app se une maravillosamente. Dentro del código coreano, podemos segregar el formulario de tarea del resto y transformarlo en un componente de reacción independiente Comience por crear una nueva puerta plegable dentro del directorio SRC, nombrándola componentes. La convención es usar los componentes del nombre como descriptivo, pero siéntase libre de elegir un nombre diferente si lo prefiere. Dentro de los componentes, puerta plegable, crear una tarea de nombre de archivo formado a GSX Tenga en cuenta que puede usar las extensiones GSX o GS. Pero estoy usando GSX aquí para denotar claramente los usos de la sintaxis GSX Al crear un componente react, es esencial importar la biblioteca react al principio del archivo del componente. Incluso si no usa directamente reaccionar cada componente, es necesario ya que GSX se transpiled al código scrat Java con Ahora, a continuación, declare el componente de función tarea f. Es la mejor práctica comenzar los nombres de los componentes con una letra apocaso Esta práctica distingue los componentes personalizados de la construcción de elementos HTML y mejora la legibilidad del código Defina la función usando sintaxis de flecha. Esto representa un componente funcional, una forma más accesible de crear componentes en comparación con el enfoque basado en clases más antiguas Ahora, exporte el componente funcional para que sea accesible para su uso en otros componentes y archivos. Este componente devolverá el código GSX para el formulario de tarea que originalmente escribimos dentro del componente Abdo GS. Y eso es todo. Ahora guarde todo y use el componente de formulario de tarea en el componente de la aplicación primero importado de la carpeta de componentes. Seleccionar el archivo del formulario de tarea. Luego incorpora el componente en el código GSX al igual que cualquier otro elemento con la etiqueta de cierre automático Al guardar el archivo Abdo GS, notarás que nada cambia en el navegador Esto indica que hemos encapsulado con éxito el código GSX del formulario de tarea en un componente independiente Ahora, vamos a aplicar siling al componente de formulario de tarea. Crea un archivo CSS llamado task form dot CSS, que puedes encontrar en la sección de recursos de video. Descárgalo e incluye el código CSS de ese archivo aquí. Dentro del formulario de tarea CSS, definimos un contenedor de tareas con el color de fondo azul y media queries para la capacidad de respuesta Para garantizar que estas teselas afecten al código GSS dentro del componente de formulario de tarea Tenemos que portar el archivo CSS en él. Ahora bien, es una buena práctica hacer de este puerto lo primero del expediente. Ya que nombramos el archivo CSS igual que componente de formulario de tarea, no olvides incluir la extensión CSS de punto, por lo que AGS sabe qué archivo desportar Al guardar esto, el formulario de tarea aparecerá maravillosamente en el navegador. Ahora procedamos a crear el elemento de tarea como su propio componente. Crear un nuevo archivo llamado task item dot CSX. Como siempre comienzan con una letra pocase para el nombre fi. Dentro de este archivo, comience importando el paquete react desde react, y luego declare un elemento de tarea de nombre de función usando la sintaxis de flecha. Recuerde exportar la función en la parte inferior de la página, ya sea como exportación predeterminada usando la palabra clave predeterminada o como un objeto que contenga el componente de elemento de tarea como propiedad. En este caso, cuando importamos un componente que fue exportado como un objeto, tenemos que usar la sintaxis de desestructuración de objetos A continuación, copie el código GSX del elemento de tarea del componente Abdo GS y devuélvalo como el código GSX para el componente de elemento de tarea Dado que cada componente debe tener su propio módulo CSS, cree un nuevo archivo llamado task item dot CSS. Dentro del archivo CSS, pega el código de la sección de recursos de este video. Luego, coloca el archivo CSS del punto del elemento de tarea en el componente. En la parte superior del archivo ABDogs, reemplace el código GSX existente con el componente de elemento de tarea Puede usar códigos VS asistencia para importarlo o agregar el puerto manully Ahora, finalmente, haz de este un componente de cierre automático y guarda el archivo ABDogs En el navegador, verás el elemento de tarea con un fondo blanco y un efecto de hover que convierte el color de fondo en gris claro Al utilizar el concepto de componentes en IGS, mejorarás el proceso de desarrollo y crearás un proyecto más organizado y poderoso Por ejemplo, aquí requerimos un botón de borrar, agregar un elemento de botón con el texto del short para eliminar, y un nombre de clase de Task Tracker item Del. Después de guardar esto, aparecerá el fondo con un fondo. Cuando subas el componente de elemento de tarea, se volverá a renderizar, que hará que el componente también se vuelva a renderizar. La salida final se mostrará dentro del elemento raíz en el archivo HTML de punto índice dentro de la carpeta pública. 10. Primeros pasos con la gestión del estado: explora el gancho de useState en React: Antes de continuar con la creación de la funcionalidad de eliminación de elementos de tarea, necesitamos manejar la creación de elementos de tarea usando el formulario de tarea. Esto implica pasar el contenido de la tarea desde el campo de entrada y agregarlo al elemento a la lista de tareas al presionar el botón agregar, haciendo que aparezca dinámicamente en la lista. Para implementar esta funcionalidad, desarrollaremos una función dentro del componente de formulario de tarea. Recuerde que en react GS, un componente es esencialmente una función donde podemos incrustar la lógica de la aplicación antes de la sentencia return. Esta lógica podría implicar recuperar datos de una API o realizar ciertas tareas, después de lo cual devolvemos el código GSX Nombremos a la función un elemento de tarea y usemos la sintaxis de la función de flecha. Dentro de la función, necesitamos extraer el valor de entrada, representando el contenido de la tarea y almacenarlo en una variable que se pueda compartir en toda la aplicación. En reaccionar para rastrear y decir el último estado del campo de entrada, utilizamos un gancho de reacción. Los ganchos son funciones proporcionadas por react que le permiten interactuar con diversos aspectos del estado de los componentes y el ciclo de vida. Piense en ellos como una forma de decir reaccionar, quiero hacer algo específico cuando esta parte de mi componente cambie. Por ejemplo, si desea realizar un seguimiento de los datos de entrada que pueden cambiar con el tiempo, usaría el gancho de estado U. Es como colocar un marcador en una pieza de rompecabezas que se mueve. Siempre que esa pieza cambie, react te avisa para actualizar la vista Importa el gancho de estado de uso del paquete react, y ahora este gancho devuelve una matriz con dos elementos. El primer ítem representa el estado más reciente de los datos rastreados. En nuestro caso, el valor de entrada. El segundo ítem es una función utilizada para actualizar el estado de los datos. Le nombramos set input value, y siempre debe comenzar con set. Por ejemplo, si estás rastreando una variable de nombre de usuario, nombrarías este nombre de usuario de conjunto de funciones. Para actualizar el valor de entrada siempre que cambie el valor del campo de entrada, utilice el atributo change. Colóquelo igual a un extremo abierto que cierra c brass para escribir código gescpt dentro del código GSS Esta función toma un argumento de evento, que usamos para actualizar el estado del valor de entrada usando la función set input value. Cambie el nombre del argumento a evento para mayor claridad. Desde el evento, acceda a la propiedad target que contiene el valor de entrada. El atributo change actualizará valor de entrada cada vez se agregue un carácter al campo de entrada. Cuando se llama al valor de entrada establecido, el componente del formulario de tarea se volverá a renderizar. Esto ilustra por qué el gancho del estado U es valioso. Activa el renderizado de componentes cada vez que cambia el estado. A continuación, ejecutaremos la función at task item para guardar el valor de entrada y agregarlo a la lista de elementos. Por ahora, la consola registrará el valor de entrada. Esta función se ejecutará al hacer clic en el botón de anuncio. Necesitamos escuchar el evento click usando el atributo on click. Coloca el nombre de la función dentro de las llaves, y no lo llames aquí En su lugar, proporcione una referencia al nombre de la función. Cuando se hace clic en la parte inferior, se llamará a la función Puede usar la referencia directa o definir una función de flecha para llamar a la función de elemento de tarea y al lado. Independientemente del enfoque, el concepto sigue siendo el mismo. Para un código más limpio, usa la referencia directa, así. Después de guardar los cambios, abre el navegador, lancha la ventana del inspector y de la pestaña de ir a la consola Arreglemos la pestaña de la consola para una mejor visibilidad, y ahora dentro de la aplicación, formemos la tarea de entrada uno y hagamos clic en el patrón at. Si bien no pasa nada en la lista de ítems, veremos el valor de entrada impreso en la consola. Esto ocurre porque un elemento de tarea se ejecuta cada vez que se hace clic en el apuem 11. Comprende la comunicación de componentes: domina el uso de accesorios en React: Ahora tenemos que guardar cada nuevo elemento de tarea en una matriz dentro de otro estado de uso. Vamos a definir ese estado de uso dentro del componente app porque necesitamos usar la matriz de elementos para renderizar dinámicamente la lista de elementos en el navegador. Lo primero es lo primero. Agreguemos el estado de uso aquí y lo llamemos. También tenemos que importar el paquete react y usar sintaxis de destrucción de objetos para importar el gancho de estado Ue desde react Este estado estadounidense devolverá una matriz. El primer elemento de esta matriz representa la matriz de elementos. Podemos nombrarle elementos de tarea. El segundo es la función set. Se encargará de actualizar el conjunto de artículos. Ahora, la parte complicada es que tenemos que llamar a los elementos de tarea establecidos dentro del formulario de tarea cada vez que se ejecuta la función de elemento de tarea at y guardar el elemento de tarea recién creado dentro de la matriz items. Pero, ¿cómo vamos a obtener acceso a la función set task items cuando ya la definimos dentro del componente app? Nuevamente, react viene con una solución alucinante. Podemos usar algo en react llamado props, que es simplemente un argumento de función Así es como una función normalmente puede obtener acceso a otra función o variable pasándola como argumento. Los argumentos de función no son algo nuevo para nosotros a menos que no conozcas el script Java. Lo nuevo para nosotros es la forma en react pasa los apoyos a la función componente Si desea pasar los elementos de tarea establecidos al componente de formulario de tarea, tenemos que agregar un atributo y nombrarlo set task items y establecerlo igual a la función set task items real. De esta manera, tendremos acceso a él dentro del componente task form a través del argumento props object Tenga en cuenta que su propiedad dentro del objeto prop se llama prop y es solo una referencia a su definición real. Cuando llamamos a la función set task items, en realidad estamos llamando a los elementos set task desde dentro del componente app. Esto no tiene nada que ver con reaccionar. Así es como funciona Javascript. No vamos a guardar el valor de entrada, que es un texto simple para los elementos de la tarea, estado porque queremos que los elementos de la tarea sean una matriz. Lo haremos empujando este valor de entrada como un nuevo elemento a la matriz de elementos de tarea. Pero primero, necesitamos tener acceso a la matriz de elementos de tarea. Vamos a pasarlo como utilería. Agregar nuevos elementos de tarea de nombre de atributo. Por cierto, puedes nombrar el prop como quieras, pero asegúrate de nombrarlo de una manera que tenga sentido y establecerlo igual a la variable o función correcta. Ahora dentro del componente de formulario de tarea, usaremos el objeto prop para obtener acceso a la matriz de elementos de tarea. Entonces podemos usar el método JavaScript llamado push para agregar el elemento recién creado a la matriz. Prefiero usar otro enfoque, que es pasar una matriz, luego agregar tres puntos sin espacios seguidos de la prop de matriz de elementos de tarea. Esto se llama el operador spread, que extiende todos los elementos de la matriz dentro de la nueva matriz. Entonces podemos agregar un nuevo ítem agregando un coma y pasando el estado del valor de entrada. Al hacer clic en este botón, se ejecutará esta función, lo que dará como resultado la actualización de los elementos de la tarea establecida con una nueva matriz que contiene todos los elementos de la tarea junto con la recién creada. Cuando la aplicación se inicia por primera vez, la matriz de elementos de tarea será nula. En Javascript, no podemos propagar ni realizar ninguna operación de matriz en un valor nulo. Podemos evitar este escenario estableciendo el valor inicial del estado en una matriz vacía. El componente p volverá a renderizar cada vez al estado de elementos de tarea establecidos se llame al estado de elementos de tarea establecidos desde el componente de formulario de tarea. Puede observar que al registrar la consola la matriz de elementos de tarea dentro del componente de la aplicación, luego guarde y abra el navegador. Permítanme despejar la consola y en el formulario de tareas en la tarea uno y darle al fondo. Verá que la matriz de elementos de tarea está impresa en la consola. Cuando la consola registra un estado en un componente de reacción, puede activarse dos veces seguidas cuando el estado cambia al mecanismo de parches reacciona Puede agrupar múltiples actualizaciones de estado, haciendo que el registro se dispare para sus rutas. Este es un comportamiento normal para optimizar el renderizado y las actualizaciones. Es importante tener en cuenta que el número exacto de registros no está garantizado y puede variar en función de los procesos internos de reacciona. 12. Renderización dinámica: crea interfaces receptivas en React: Al derecho. No solo imprima la matriz de elementos de tarea en la consola. En su lugar, queremos tomar cada elemento de la matriz, mostrarlo en la pista de tareas o contenedor, y actualizar simultáneamente la lista de elementos de navegadores para que coincida con el estado de la matriz de elementos de tarea. Siempre que cambie el estado, la lista y el código GSS también deben actualizarse en consecuencia Para que esto suceda, envolvemos el componente del elemento de tarea en llaves dobles Haciendo esto porque vamos a usar código de script Dava dentro de esas llaves Estaremos usando el método map, una función hand Gray en JavaScript. Con map, podemos mirar a través la matriz de elementos de tarea e interactuar con cada elemento individualmente. Dentro de la función de devolución de llamada de mapas, obtenemos acceso a cada elemento de tarea Esto nos permite crear una instancia de componente de elemento de tarea con datos específicos. Esta estrategia de renderizado dinámico nos da un montón de componentes. Representa una tarea única de la matriz. Lo que produce la función matemática es una matriz de g Sx elementos, cada uno correspondiente a un elemento en la matriz de datos original. Si guardamos esto y tomamos un picoteo en el navegador, veremos que se han renderizado dos elementos de tarea en la lista Eso es porque bueno, nuestra matriz solo tiene dos artículos. Ahora, si agregamos otro elemento a través del formulario de tareas, un nuevo elemento aparecerá dinámicamente al final de la lista. Sin embargo, el contenido de estos ítems aún no es dinámico. Para hacerlos dinámicos, vamos a usar props y pasar el elemento de tarea al componente de tarea Cambiaremos esto con el prop de tarea. Si lo escribo así , aparecerá como texto plano. Pero si lo envuelvo en un latón de doble relación, se tratará como una variable javascript y se reemplazará con su valor real Cada vez que se crea un nuevo elemento, se unirá a la lista con su valor distinto. Todo gracias a la función map, que genera una matriz de elementos componentes de elementos de tarea. Siempre que la matriz de elementos de tarea cambia, el componente obtiene una nueva ejecución. Activación de la función map para volver a ejecutar y generar la matriz de elementos Cada elemento de la lista se llama child. Ahora, si borramos la lista de tareas recargando la página e intentamos agregar un elemento fresht, puede notar que un o en la consola le dice que cada analista hijo necesita un accesorio clave único Aquí te explicamos cómo podemos arreglarlo. Podemos agregar el prop clave al componente de elemento de tarea como un atributo. Debe ser una clave única, ya sea un número o una cadena. Puede usar el parámetro index de la función map, que le dará a cada elemento una clave diferente a los demás. En react, cuando renderizas dinámicamente una lista de componentes usando la función map o cualquier otro método, cada componente necesita un tifier único Ahí es donde entra el accesorio clave. El prop clave es un atributo especial que se adjunta a cada componente renderizado dinámico. Es un trabajo ayudar a reaccionar a distinguir cada componente de manera única y eficiente. Esto es especialmente útil cuando ocurren cambios en la lista, como agregar, eliminar o reorganizar elementos Cuando realiza cambios en la lista de elementos, react se basa en el accesorio clave para averiguar qué componentes han cambiado, deben agregarse o deben eliminarse. Este enfoque inteligente reduce las actualizaciones innecesarias y hace que todo el proceso sea más suave y rápido. 13. Administración de tareas y la interacción dinámica en React Web App: Después de renderizar los elementos dentro la lista de contenedores del rastreador de tareas, es hora de trabajar en el componente de elemento de tarea y hacer posible eliminar un elemento de la lista usando este botón. Ahora, este botón eliminará un elemento de la matriz de elementos de tarea, ya que estamos usando esa matriz para renderizar los nidos de elementos de tarea en el componente de la aplicación Necesitamos definir la función que manejará la eliminación del elemento dentro del componente app. Dentro de aquí nombra la función, elimina elemento por ID. Utilice un fuera de función, que tomará un argumento ID. En su interior, actualizaremos la matriz de elementos de tarea, estado usando el método set task items. Primero, preparemos la nueva versión de la matriz. Vamos a declarar una constante un nombre nuevos elementos de tarea, y establecerlo igual a la matriz de elementos de tarea. Usaremos el método filter para iterar a través de los elementos de la matriz y solo devolveremos elementos con un ID que no sea igual al ID del elemento que queremos eliminar La función filter devolverá una nueva matriz que no contiene el elemento delete. Pasaremos la nueva matriz de elementos de tarea como el nuevo estado de la matriz de elementos de tarea. Ahora tenemos que ejecutar la función delete cuando hacemos clic en este botón de borrar dentro del componente task item. Pasaremos la función delete item by D como prop. Luego dentro de aquí, escucharemos el evento click en este botón y ejecutaremos el elemento delete mediante una función D. Ahora en vez de cada vez que queremos acceder a un prop específico, tenemos que escribir props dot algo Prefiero usar la destrucción de objetos para extraer los accesorios del objeto prop Al hacerlo, queda claro qué aceptará este componente como utilería, y está más organizado de esta manera Ahora bien, si guardamos esto e intentamos eliminar un elemento, no pasará nada porque no pasamos el ID del elemento a la función delete item by ID. Como saben, no podemos llamar a la función directamente así porque tenemos que pasar una referencia a la función sin conizarla De lo contrario, se llamará cada vez que el componente se renderice. Hay dos formas de pasar la identificación. En primer lugar, podemos utilizar la función band, que acepta este contexto. Ahora que esta palabra clave en Java script se refiere al objeto al que pertenece la función o método corrient pertenece la función o método Representa el contexto en el que se llama a la función y le ayuda a acceder a las propiedades y métodos de ese objeto. El segundo argumento van a ser los argumentos de función reales, que en nuestro caso es solo el elemento de tarea. Esta es una forma muy complicada de hacer algo sencillo. Prefiero agregar una función RO como esta y tal como lo hicimos antes, y llamar a la función delete item by ID y pasar el ID de tarea. Por ahora, en realidad no tenemos un ID dentro del accesorio de tarea porque estamos guardando su elemento de tarea como un texto sin formato. Tenemos que actualizar esto antes continuar reemplazándolo con un objeto que contenga una propiedad ID establecida en un valor dinámico. Este valor dinámico será una operación simple, que es la longitud de la matriz de elementos de tarea más uno. Entonces podemos nombrar el texto de la segunda propiedad y establecer su valor en el valor de entrada. De esta manera, podemos eliminar elementos de tarea de la matriz usando sus ID. Ahora el contenido del elemento de tarea está dentro de la propiedad text. Asegúrate de actualizar eso. Ahora, vamos a guardar esto y dentro del navegador. Tenemos que recargar porque hemos actualizado la forma de los elementos de la tarea Ahora agreguemos la tarea uno, luego la tarea dos. Antes de eliminar los elementos, volvamos al código dentro componente de la aplicación y la consola registremos el ID del elemento solo para tener un registro el ID del elemento solo para tener más cercano a lo que sucede detrás de escena. Eliminemos la tarea número uno. Notarás que el número uno fue impreso en la consola. Si eliminamos la tarea número dos, el número dos se imprimirá en la consola. Ahora, esto te muestra cómo Ya puede ser flexible y dinámico, lo que abre la puerta para que los desarrolladores creen aplicaciones web emocionantes e interactivas. Ahora dentro del formulario de tarea, extrayamos los props del argumento props usando la destrucción de objetos y actualicemos Ahora, quiero destacar algo importante aquí. Si tratamos de agregar un ítem a la tarea, funcionará bien. Pero si dejamos el anuncio de descanso vacío del campo, el artículo se agregará a la lista de artículos. Tenemos que evitar que eso suceda. Y eso es agregando un bloque de verificación dentro la función de elemento de tarea de anuncio antes de actualizar el estado de la encuesta de elementos de tarea. Si el valor de entrada es igual a una cadena vacía, simplemente conectará la ejecución del código usando la sentencia return así. Ahora va a funcionar bien cuando pasemos una cadena vacía. Pero cuando agregamos el espacio como valor y presionamos el al putton, se creará el ítem Simplemente podemos evitarlo también usando la función trim, que elimina cualquier espacio de una cadena. Si el valor de entrada solo tiene un espacio dentro, el valor de recorte devolverá una cadena vacía. Eso cumplirá con esta condición de sentencia if, lo que dará como resultado el bloqueo de la ejecución del código y la prevención de la creación de elementos de tarea vacíos. Ahora, en la mayoría de las aplicaciones web modernas como Google, por ejemplo, no necesitamos hacer clic en el botón Buscar para ejecutar la búsqueda. Sólo podemos presionar Enter, y va a hacer el mismo trabajo. En nuestra aplicación, podemos hacer lo mismo escuchando el evento de palabras clave. Cuando se presiona la tecla enter, ejecutamos la función de elemento de tarea A. Podemos escuchar ese evento en el elemento contenedor usando en el atributo key down. Puedes escuchar el evento en cualquier elemento GSX, pero siempre es mejor ponerlo en el elemento padre Este atributo requiere una devolución que aceptará un evento Podemos usar ese evento para verificar el nombre de la clave que presionó el usuario. Si es igual a ingresar diez usando el operador final Javascypogical, podemos ejecutar Ahora, digamos esto y pruébalo en el navegador. En la tarea número tres, y presiona Enter en tu teclado. Ahí vas. De esta manera es mucho más fácil. Ahora queremos agregar una mejora más a nuestro componente de formulario de tareas. Quiero borrar el campo de entrada cada vez que agreguemos un nuevo elemento presionando el botón at o presionando el botón enter en el teclado. Este también es súper fácil. Solo tenemos que venir aquí después actualizar la matriz de elementos de tarea y luego actualizar el valor de entrada usando la función set input value y configurarlo en una cadena vacía. Si probamos esto en el navegador, no funcionará. Pero si nosotros contras registramos el estado put value aquí y en el navegador, comenzamos a escribir, verás el estado del valor put cambiando cada vez que tecleemos algo. Presta atención cuando golpee el erkey, veremos que el último estado del valor de entrada está vacío En realidad está funcionando, pero no tiene ningún efecto en el campo de entrada porque no conectamos el estado del valor de entrada al valor real de la entrada. Para ello, tenemos que establecer el valor de atributo del elemento input para que sea igual al estado del valor de entrada. Ahora bien, si tratamos de crear una nueva tarea y luego pulsamos enter o el abuton, se borrará el campo de entrada 14. Crea una casilla de verificación dinámica con indicaciones visuales en React: Parte superior de la eliminación de elementos de tarea. Necesitamos crear un botón que funcione como una casilla de verificación para marcar un elemento de tarea específico como completado. Para ello, agregaremos un elemento span para que sirva como botón. Sí, podemos lograr esto porque en react y Java script en general, podemos escuchar el evento click de cualquier elemento para que podamos convertir ese elemento en un botón funcional. Ahora, vamos a incluir la palabra terminar. Para el nombre de la clase, use la clase de marca de verificación. Al hacer clic en este elemento span , establecerá el estado de este elemento de tarea como verificado. Hacemos esto usando el gancho estatal. Asegúrese de portarlo en la parte superior de este archivo. Entonces vamos a nombrar este estado se comprueba, y el segundo argumento se llamará Sets checked function. Escucharemos el evento click en el elemento span y ejecutaremos una función llamada handle check box change. Esta función aún no existe, por lo que necesitamos definirla. Lado aquí, podemos actualizar el estado de uso comprobado para que sea verdadero y establecer el estado inicial para forzar. En este caso, el usuario puede marcar el elemento de tarea como completado. No obstante, si cambian de opinión, no pueden actualizar el estado de facilidad comprobada. Como cada vez que se ejecuta esta función, establecerá el estado de comprobación de facilidad en true. No queremos que eso suceda. Entonces queremos que nuestro botón terminado funcione como un switcher, como una casilla de verificación normal donde puedes marcarlo o y verificarlo presionando el mismo botón Para lograrlo, podemos actualizar el valor del estado agregando un signo de exclamación y pasando la constante de facilidad comprobada Esta operación lasica siempre devolverá el valor opuesto del estado coreano Si es cierto, se convertirá en falso para que si se marca, quedará desmarcado Si intentamos probar el potente terminado ahora, funcionará, pero no notaremos nada visualmente. Reemplacemos el acabado con k primero y lo frotemos dentro de un lapso con el nombre de la clase icon. Ahora, el nombre de la clase icon no tendrá efecto por ahora, pero eso está bien porque lo reemplazaremos con un ícono real en las próximas lecciones. Ahora bien, ¿cómo agregamos algunas señales visuales para representar el estado del elemento checkbox Bueno, con RACGas, podemos lograr swing dinámico usando el atributo style Este atributo se utiliza para agregar picadura en línea. ¿Colocar dos llaves y proporcionar un objeto? Este objeto puede contener cualquier propiedad CSS. Normalmente en HTML, establecemos este atributo en una cadena. No obstante, en reagas, debería ser un objeto donde su propiedad CSS sea una propiedad del objeto En nuestro caso, usaremos la propiedad de color de fondo y haremos que su valor sea dinámico utilizando el estado variable de verificación de facilidad dentro de un operador ternario t Cuando sea cierto, estableceremos el color de fondo en el siguiente código de color, y si es falso, lo pondremos en blanco. Guarde esto y en el navegador, haga clic en el botón k. Notarás que cambiará su color de fondo a verde. Al hacer clic de nuevo, lo devolveremos a blanco. Notarás una transición suave entre los dos colores debido a la propiedad de transición dentro de la marca de verificación clase CSS. Esta propiedad tardará 0.3 segundos en hacer la transición entre los dos colores de fondo. 15. Mejora la realización de tareas y la gestión del estado en tu aplicación React: Dentro del componente de elemento de tarea, hemos creado el estado de verificación de facilidad y solo lo estamos usando para actualizar el color de fondo del elemento de casilla de verificación. Sin embargo, aún no hemos desarrollado la funcionalidad principal, que es marcar el elemento de tarea como completado y actualizar el estado del elemento de tarea. Para lograr esta funcionalidad, necesitamos definir una función de finalización de tarea en el componente. Esta función tomará dos argumentos, ID de tarea, y es completa, un argumento de intimidación. Pasaremos esta función como un prop al componente de elemento de tarea. Dentro de la función de cambio de casilla de verificación de identificador, ejecutaremos esta función de finalización de tarea, pasando el ID de tarea Para el argumento is complete, usaremos el estado comprobado ese y agregaremos un signo de exclamación. Ahora, volviendo aquí, cuando necesitamos actualizar el elemento de tarea específico, tenemos que actualizar toda la matriz. En lugar de actualizar la matriz fuera de la función set task items, como se muestra aquí, podemos hacerlo de manera diferente. Podemos pasar en un coback proporcionado por la matriz de elementos de tarea anterior Esta devolución de llamada debería devolver el nuevo estado, que en nuestro caso es una matriz A continuación, iteraremos a través de la matriz de elementos de tarea anterior usando la función map Para cada elemento de tarea, verificamos si su ID coincide con el argumento ID de tarea. Si lo hace, devolveremos un objeto y extenderemos las propiedades de la tarea antigua usando el operador spread, que también funciona para los objetos. Pero solo asegúrate de esparcir objetos en objetos y matrices en matrices. Luego agregaremos una nueva propiedad llamada completed y la estableceremos en true. Al crear el elemento de tarea inicialmente, debemos establecer la propiedad completada para forzar, asegurando que todos los elementos de la tarea comiencen por tarea y completados Ahora, regresemos aquí y agreguemos el prop de finalización de tarea al componente de elemento de tarea. En resumen, cuando hacemos clic en el elemento checkbox, activamos la función handle checkbox change, actualizando el estado de facilidad comprobada y cambiando el color de fondo de la casilla Posteriormente, se llama a la función de finalización de la tarea con el ID de tarea y se completa los argumentos. Esta función ejecuta la función set task items. Actualizando el estado de los elementos de tarea y marcando el elemento de destino como completado. Por cierto, si el ID de elementos de tarea no coincide con el ID de elementos de destino, se devuelve a la matriz sin modificación. En cuanto a la propiedad terminada, en lugar de establecerla en true así, debe establecerse al valor del argumento is complete. De esta manera, podemos cambiar entre estados comprobados y no comprobados con solo presionar un botón Registremos la matriz de elementos de tarea para comprender mejor lo que está sucediendo. Ahora abra el navegador, asegúrese de que el servidor esté en ejecución primero, luego agregue una tarea de elemento uno. En la consola, verá la matriz de elementos de tarea que contiene el elemento task one con la propiedad completed establecida en falls. Al hacer clic en el botón k establece la propiedad terminada en true. La presencia de dos matrices impresas aquí se debe a la naturaleza de reacciona, que a veces se vuelve a renderiza varias veces dependiendo del estado del componente. Si renderiza dos veces es normal, pero más de dos o tres veces podrían indicar un problema. Ahora, me gustaría abordar un problema en la aplicación que puede ser un comienzo. Al agregar algunos elementos, luego eliminar y verificar un elemento, agregar otro elemento sin tareas, luego verificar ese elemento y luego verificarlo, y luego intentar eliminar la tarea número dos, ambas tareas se eliminan. Este comportamiento extraño surge porque no debemos pasar el prop array items del componente task form y usarlo dentro de la función set task item state. Esta manipulación del estado conduce a consecuencias no deseadas, incluyendo la eliminación simultánea de múltiples tareas Ahora, para abordar esto, necesitamos un enfoque más controlado de la gestión estatal. Podemos cortar este código y agregar un coback a la función set state, utilizando el argumento prev que contiene los últimos datos de estado Luego regresaremos y pegaremos la matriz ahí. En lugar de usar el prop de elementos de tarea, usaremos el argumento Prev. Esto asegura que siempre estamos trabajando con el último estado. Ahora, pruébalo esto en el navegador. Borre la consola en la tarea uno, una tarea dos, luego verifique o verifique elementos, y al eliminar un elemento específico, solo ese elemento se eliminará. 16. Hazte práctico con el gancho useEffect: agrega filtros y estilo dinámico: Nuestra aplicación React está tomando su forma final. Podemos crear nuevos artículos, podemos marcarlos como completados y eliminarlos. Ahora quiero agregar un elemento dentro del contenedor de la app striker y hacer que las tareas coreanas cuenten para el usuario. Esto mejorará la experiencia del usuario. Dentro del componente app y dentro del contenedor de task tracker div, agregaremos un elemento de barra de información. Primero, agrega un di y establece el nombre de la clase en la barra de información del rastreador de tareas. Dentro de este dif, agregará el elemento span y renderizará la longitud de los elementos de la tarea. Ahora en el navegador, si tenemos una forma vacía, obtendremos cero elementos. Siempre que agreguemos otro ítem, el número aumentará y nos mostrará cuántos artículos tenemos en la lista. Ahora dentro de la barra de información, quiero tener algunos botones para filtrar los elementos de la tarea por su estado, así podemos filtrar las tareas completadas y renderizarlas solas en la lista o filtrar las tareas pendientes y también renderizarlas solas en la lista. Dentro de aquí, primero agreguemos el elemento span y agreguemos el texto todo. Esto se utilizará para eliminar el filtro y renderizar todos los elementos dentro de la lista. El segundo elemento clicable se encargará de mostrar solo las tareas completadas, y el último es para las tareas pendientes, las tareas que no están marcadas como completadas Ahora vamos a manejar cada tipo de filtro usando un estado Ue. Tendremos un estado de tipo de filtro y la función set correspondiente. Dentro de la propia función de estado U, estableceremos el valor inicial del tipo de filtro a all. Si no hay ningún filtro aplicado, renderizaremos todos los elementos de la tarea. Cuando filtramos los elementos de la tarea, debemos guardar el resultado filtrado en otro estado de uso. De lo contrario, si modificamos el estado del elemento de tarea en su lugar, se perderán los datos originales. Nombra a este nuevo estado las tareas filtradas. Comencemos manejando el estado del tipo de filtro. Añadiremos un oyente de eventos onclick al elemento all y ejecutaremos la función set filter type, y estableceremos el estado en A continuación, copie esto y pegarlo en el botón completado, y cambie el estado para completar. Haz lo mismo aquí y cambia el estado del tipo de filtro a pendiente. Cuando actualicemos el tipo de filtro haciendo clic en uno de estos botones, filtraremos la matriz de elementos de tarea y guardaremos la salida en la matriz de tareas filtradas. Entonces, en lugar de renderizar la manera de los elementos de tarea, tenemos que renderizar la matriz de tareas filtradas. Y cuando hacemos clic en el botón O, actualizaremos la matriz de tareas de filtro con la matriz de elementos de tarea, que contiene todos los elementos creados. El estado de los elementos de la tarea va a funcionar como un almacenamiento. Ahora bien, ¿cómo vamos a actualizar la matriz de tareas filtradas cuando cambie el tipo de filtro? Bueno, en react, podemos usar otro ho llamado use effect, que es una poderosa herramienta en reacciona para manejar tareas extra que tienen que suceder cuando algo cambia en tu app? Tenemos una lista de tareas que queremos filtrar en función de diferentes criterios. Cuando usa use effect, puede actualizar automáticamente esa lista cada vez que cambie el filtro. Es como tender a reaccionar para vigilar ciertos cambios y luego tomar acciones específicas en respuesta En nuestro caso, utilizamos el efecto de uso para vigilar los cambios en el tipo de filtro y actualizar la encuesta de tareas de filtro en consecuencia. Esto mantiene su aplicación receptiva y sincronizada con las opciones de los usuarios. Ahora, el gancho de efecto de usuario acepta dos argumentos. El primero es un coback que contendrá todo el código que queramos ejecutar El segundo es el array de dependencias, que es como una lista de vigilancia para los cambios Pones ahí dentro las variables que quieres reaccionar para estar atentos. Cuando alguna de esas variables cambia, el código dentro del efecto de uso se ejecuta de nuevo, o en otras palabras, se ejecutará el efecto de usuario coback Es una manera de decir, oye, reacciona, si estas cosas cambian, haz estas cosas. Si deja la matriz vacía, el efecto se ejecuta una vez cuando se inicia el componente. Si elimina la matriz por completo, el efecto se ejecuta cada vez que el componente se actualiza. En nuestro caso, queremos vigilar el estado del tipo de filtro y la matriz de elementos de tarea, modo que cada vez que tengamos un nuevo elemento en la matriz, volvamos a ejecutar la funcionalidad de filtro. Ahora dentro de esta devolución de llamada, comprobaremos si el tipo de filtro es igual a completado Después actualizaremos la matriz de tareas de filtro usando el argumento anterior y el método de filtro. Después devuelva solo los artículos con la propiedad terminada igual a true. De lo contrario, restableceremos la matriz de tareas de filtro a la matriz original. Esto se debe establecer tareas de filtro y pasar en la matriz de elementos de tarea, que contiene todos los elementos de la tarea. Ahora vamos a guardar esto y probarlo desde el navegador. Ops tenemos un orden, y eso es porque configuré el estado inicial de la matriz de tareas de filtro en una cadena, pero debería ser una matriz vacía. Lo copié de esta línea y no lo actualicé. Ahora vamos a guardar e ir al navegador. El pedido ha desaparecido, y ahora agreguemos un nuevo elemento de tarea. A continuación, agregue la tarea dos. Marquemos la tarea uno como completada, y cuando hagamos clic en el patrón completado, verá que la lista se filtra, y solo mantendrá las tareas completadas. Si haces clic en el O Paton, éste renderizará todos los artículos Bueno, haría lo mismo cuando haces clic en el filtro dependiendo porque todavía no lo codificamos. Agreguemos el código para filtrar tareas dependientes. Aquí, agregue una declaración LF. Tenemos que verificar si el tipo de filtro es igual a pendiente. Si es así actualizaremos el estado de la matriz de tareas de filtro y haremos lo mismo que hicimos aquí. Copie este código y pegarlo y solo devuelva los elementos con propiedades completadas establecidas en false. Pero ahora mediante el uso de la matriz de tareas de filtro anterior, vamos a filtrar una matriz que ya estaba filtrada. Esto dará como resultado un comportamiento extraño y el filtro pendiente no funcionará. Encima de eso, las cosas comenzarán a romperse. Lo que tenemos que hacer aquí es filtrar la matriz de elementos de tarea en sí, porque como dije muchas veces, este estado de matriz siempre contendrá todos los elementos de la tarea. Copiemos la devolución de llamada de filtro desde aquí y actualicemos la matriz de tareas de filtro con la nueva matriz de elementos de tarea Copia todo este código, y hagamos lo mismo dentro de esta declaración if dos y simplemente cambiemos la propiedad completada a false. Ahora dentro del navegador, asegúrate de volver a cargar la pasta para restablecerlo todo A continuación, agregue la tarea uno, tarea dos y la tarea tres. Comprobemos la tarea uno. Si filtramos las tareas completadas, solo obtendremos la tarea número uno, lo que significa que funciona. Si hacemos clic en pendientes, obtendremos tareas dependientes. Pero ahora se comprueba la tarea número dos. Pero cuando eliminemos el filtro haciendo clic en, la marca de verificación desaparecerá. Esto es solo un problema de renderizado, lo que significa que cuando jugamos con los filtros, el componente de elemento de tarea no se renderiza correctamente. Podemos arreglarlo yendo al componente de elemento de tarea y agregar un gancho de efecto de uso. Asegúrate de importarlo desde el paquete I. Este gancho de efecto de uso vigilará para que el punto de la tarea esté completo y se verifique las variables. Y cuando una de ellas cambie, actualizaremos el estado de uso comprobado. Guarda todo y vuelve al navegador. Ahora, si cambia entre filtros completados y pendientes, notará que los componentes del elemento de tarea se renderizan correctamente. Para evitar tales errores en el futuro, solo asegúrate de usar el gancho de efecto de uso si tienes algún elemento GSX que se renderiza en función de una condición Ahora, antes de terminar este video, quiero agregar algo. Actualmente, cuando cambiamos entre filtros, no podemos saber el tipo de filtro actual solo mirar a la interfaz de usuario. Lo que quiero hacer aquí es resaltar el tipo de filtro activo. Podemos hacer eso dentro de aquí autorizando el atributo style para agregar un estilo dinámico Actualizaremos el color de fondo en función del tipo de filtro. Si es igual a completado, usaremos el operador final y devolveremos este fondo gris. Este real debe ser todo no completado. Copia este atributo de estilo y colócalo dentro del siguiente elemento pan, que representa el filtro completado y cambia todo aquí con completado. Agrega otro signo igual aquí para que sea una operación lógica. Por último, hagamos lo mismo con el patrón de filtro de flexión. Si el tipo de filtro es igual a doblar, bien cambia el color de fondo al color gris. Si guarda esto y echa un vistazo al navegador, podemos ver qué tipo de filtro está activado. 17. Primeros pasos con los iconos de React: mejora tu interfaz de usuario: El componente de elemento de tarea. Quiero reemplazar el contenido del elemento checkbox y el botón de borrar con algunos iconos hermosos En react GS, podemos parar y utilizar un paquete llamado react icons. En lugar de crear estos iconos desde cero y buscar imágenes. El paquete de iconos de reacción te ofrece una amplia gama de iconos al alcance de tu mano. Puede usar PM install o Yarn ad para parar el paquete react icons, luego diríjase a enter y espere a que se complete la instalación. Puedes navegar al sitio oficial de los iconos de reacción usando el C RL. Allí encontrará instrucciones sobre cómo instalar el paquete y utilizarlo. En el lado izquierdo de esta página, verás una lista de diferentes bibliotecas de iconos como Font Awesome material design y más, todo dentro de un solo paquete. Dentro de esta barra de búsqueda, puedes buscar un ícono específico. En nuestro caso, queremos un icono de eliminar. Voy a escribir borrar. Esto me dará una lista de iconos de eliminación para elegir. Puedes elegir a quien te guste. Para mí, voy a elegir éste. Al hacer clic en él, el nombre del icono se copiará para usted. Ahora puedes volver al proyecto encima del componente del elemento de tarea, derecha y tablero, y abrir dos llaves, luego pegar el nombre del icono allí Importaremos este icono desde el paquete a icons y desde la carpeta AI. Puedes ver que aquí tenemos muchas carpetas, pero puedes saber en cuál se encuentra tu ícono por las dos primeras letras del nombre de los íconos. A continuación, necesitamos otro icono para el botón de verificación. Buscaré cheque, y escogeré estos dos iconos. En el proyecto, voy a cambiar entre ellos según el estado comprobado Oriente. Si se marca el elemento de tarea, renderizaré el icono lleno, y si se desmarca, renderizaré el elemento de casilla de verificación vacío Volvamos al proyecto y dentro del componente de elemento de tarea y pot ambos íconos en un puerto por separado declaraciones como esta. Ahora comencemos con el botón de borrar. Elimine este texto y agregue el icono de eliminación de contorno de IA como un componente de reacción. Ahora bien, si guardamos esto y registramos en el navegador, veremos que ahí se renderizó el icono. Pero necesita un poco de aguijón para hacerlo más grande. Vuelve aquí y agrega un nombre de clase, icono, que puedes encontrar en el archivo CSS del elemento de tarea si quieres echarle un vistazo. Ahora esta clase hará que el icono de eliminar aparezca más grande. Volvamos al botón de verificación y eliminemos este elemento pan. En su lugar, renderizaremos el ícono del cuadrado de verificación BS. También necesita tener el icono de nombre de clase para que sea más grande así. Ahora, si hago clic, verás que el color de fondo cambia a verde, pero en realidad es el fondo del contenedor de iconos, no el icono en sí. Quiero cambiar entre este icono y el lleno. Entonces en el proyecto, quiero cambiar entre este icono y el lleno. Vamos a agregarlo aquí, luego agarramos ambos dentro de dos llaves porque necesitamos agregar un código de script Java Vamos a comprobar si se comprueba el estado de la variable , no es cierto. Lo que significa que el artículo no está verificado. Después vamos a renderizar este icono. De lo contrario, renderizaremos el icono lleno. Ahora en el navegador, si hago clic en el icono de casilla de verificación, se reemplazará por el icono de casilla de verificación rellenada, pero no queremos que se llene con el color negro Podemos cambiar el color de relleno usando el atributo fill y establecerlo igual a este código de color, que es un color verde claro. Pero ahora en el navegador, parece que desapareció. Pero no es porque el fondo del elemento sea verde también. De esa manera lo podemos ver. Para solucionarlo, eliminemos este atributo de estilo de aquí y esta vez puedes ver la casilla de verificación de relleno ahí, y funciona como magia Ahora, también quiero cambiar el icono de borrar con el lleno. Busquemos el borrado y escojamos éste. Debido a que comienza con las letras AI, podemos importarlo de aquí también. Después desplácese hacia abajo y vamos reemplazarlo con este icono aquí y establecer el atributo fill el color rojo porque es un botón de borrar. Por último, eliminemos el ícono antiguo de aquí y revisemos el navegador. Todo bien. No podemos ver nada porque de nuevo, el color de fondo también es rojo. Tenemos que cambiar eso desde dentro de esta clase. Abra el elemento de tarea en el archivo CSS. Y quitar la propiedad de color de fondo. Ahora podemos ver el icono de eliminar. Como puedes ver, el uso de iconos hizo nuestra aplicación fuera más hermosa y divertida de usar. 18. Añade navegación por múltiples páginas: implementa DOM de React Router: Se ha completado la funcionalidad del rastreador de tareas. Ahora nos centraremos en agregar varias páginas, o en otras palabras, múltiples rutas. Para ello, primero agregaremos un encabezado en la parte superior de esta página y luego agregaremos algunos enlaces de navegación a la misma. En la carpeta de componentes, agregaremos un nuevo componente y lo nombraremos encabezado g SX. Primero, port react from react, luego definimos la función del componente header y la exportamos en la parte inferior, dentro de este componente, devolveremos un elemento header y le daremos un nombre de clase de header. En el interior, tendremos dos enlaces de navegación, uno para el hogar y el otro para una página sobre. Estos dos elementos tendrán el elemento de encabezado de nombre de clase. Todavía no tenemos estas clases. Crearemos un nuevo archivo CSS para el componente header. Encontrarás este archivo en la sección de recursos de este video. Solo agrégalo a tu proyecto. Tiene algunos estilos para el elemento header y para los items header. Ahora, el componente de encabezado se va a agregar dentro del archivo CS de índice porque queremos que el encabezado esté presente en todas las páginas. Dentro de aquí, agrega encabezado y asegúrate de importarlo desde la carpeta de componentes. Si probamos esto en el navegador, podemos ver que el Hader está ahí en la parte superior de la página, pero sin ningún estilo Eso es porque me olvidé de desarmar el archivo hydro Dot *** dentro del componente header Ahora, si revisamos de nuevo, veremos el encabezado con home y sobre los botones de navegación, e igual efecto ho. Ahora, la página de inicio en nuestro caso es el componente ab DGS. Lo que nos falta aquí es el at page. Vamos a construir un componente para ello y nombrarlo sobre DGS X. Nuevamente, port react from react, luego definir la función del componente y nombrarlo sobre page y exportarlo en la parte inferior Por ahora, solo volvamos un dip con texto diciendo sobre. Ahora dentro del archivo Index DoZis, continúe y use el componente a page así En el navegador, verá que allí se renderizó un texto a, proveniente del componente about page. No queremos que la página acerca de se renderize con la página principal al mismo tiempo. Queremos que cada página se renderize en una ruta separada. Por ejemplo, si navegamos a Local house 3,000 slash a, deberíamos obtener solo la página acerca Ahora, cuando se trata de construir aplicaciones web con react, posible que haya notado que por defecto, react admite un enfoque de aplicación de una sola página o en términos cortos SPA. En los SPAs, todo se carga inicialmente en una sola página HTML. A medida que los usuarios interactúan con la aplicación, react actualiza parte de esa página dinámicamente, dando la ilusión de navegar por diferentes páginas sin realmente refrescar toda la página. Sin embargo, hay escenarios en los que desea páginas distintas con URL separadas, como la página anterior Aquí es donde entra en juego la magia del paquete React Router Doom Ahora, este paquete le ayuda a simular comportamiento de varias páginas en una sola aplicación de página. Con el paquete react router doom, puede definir rutas para diferentes páginas dentro de su aplicación Se trata de enrutar componentes a una URL específica. Por ejemplo, puedes configurar una ruta para la página acerca de la misma manera que lo harías para la página de inicio. Una vez que comiences a reaccionar router Dom, vamos a importar un par de cosas para ello. Primero, el enrutador del navegador, que es una parte vital del paquete de volcado del enrutador react y react. Ayuda a su aplicación a administrar diferentes QRL y muestra los componentes correctos en función de esas Piense en ello como el navegador que asegura cuando los usuarios van a una URL específica, el contenido correcto aparece en esta pantalla. Ahora usemos el S QR para cambiar su nombre a solo router. Utilizaremos este componente para envolver todos los componentes de nuestra aplicación. A continuación, importaremos el componente de rutas y el componente de ruta. El componente de rutas contendrá todas nuestras páginas, y para cambiar entre páginas usando una U, utilizaremos el componente de ruta. Ahora este componente puede aceptar un atributo path. Para la página de inicio, agregaremos una diagonal hacia adelante que representa la ruta raíz Luego para renderizar el componente app, utilizaremos el atributo component y pasaremos el nombre del componente. Haremos lo mismo para la página acerca de. Pero esta vez, queremos que el camino sea recortado. Puedes quitar la baraja si quieres. Ahora, el componente que se renderizará en esta ruta es el componente about page. El encabezado no está incluido dentro del componente de rutas porque queremos renderizarlo en cada ruta. Ahora dentro del navegador, navegue hasta la manguera URO Local 3,000 aproximadamente, y ahí va. El componente Acerca de la página es el único que se renderizó. Ahora agreguemos un poco de estilo a la página acerca de. Crea un archivo CSS sobre punto, y dentro de él, crearás una clase contenedora y agregarás estas propiedades a la misma. Esto solo hará que el texto sobre salte al centro de la página. Si navegamos de regreso a la ruta raíz, volveremos a subir el rastreador. 19. Mejora de la navegación: domina el componente de NavLink en ReactJS: Queremos navegar entre páginas usando los botones de navegación del encabezado. Sin embargo, actualmente, estos son solo elementos de pan. Necesitamos cambiarlos a elementos de hipervínculo. Estableceremos el atributo H ref para la página de inicio en la ruta raíz de esta manera. Del mismo modo, haremos lo mismo para el enlace about y estableceremos la referencia H en a. con estos cambios, podemos navegar entre las páginas de inicio a diez usando estos botones. Ahora, centrémonos en resaltar el enlace de navegación activo con un color y estilo diferentes. Cuando estamos en la página at, se debe resaltar el enlace de navegación a. Pero el reto aquí es que no queremos que la página se vuelva a cargar Cada vez que la página se recarga, nuestra aplicación perderá su estado, y todos los datos serían eliminados Para evitar que esto suceda, el paquete reacro dom proporciona un componente útil llamado Navnk El componente novedoso del router React Dom es como un enlace de navegación mejorado para las aplicaciones de reacción Es similar a la etiqueta ACML A, pero en lugar de usar el atributo H t, usamos otra llamada dos El componente novelin aplica automáticamente el estilo para los enlaces activos Cuando los usuarios hacen clic en la novela, resalta visualmente la página coreana, creando una experiencia de navegación más fluida e intuitiva. Ahora para lograr esto, vamos a crear una nueva clase en el archivo CSS de punto de encabezado para el estado activo de encabezados. Mi encontrar esta clase ya definida en el archivo. Si no lo encuentras, así que sigue. Dentro de esta clase, ajustaremos el color usando este código, representando un color azul. Hagámoslo un poco más oscuro. Ahora regresa al archivo HoDogs x y dentro del primer enlace nav dentro del atributo de nombre de clase, enciérrelo con base rizada Pasar en función que acepta un objeto que contiene dos propiedades, está activo y está pendiente. La propiedad activa es se establecerá en true si la ruta URL en el navegador coincide con la ruta URL dentro de los dos atributos. La propiedad es pendiente otro lado se utiliza para administrar la navegación a la espera de datos u operaciones ACN Ahora dentro de esta devolución de llamada, necesitamos devolver un nombre de clase Devolveremos condicionalmente la clase de artículo de encabezado. Junto con la clase activa del elemento de encabezado, si la propiedad activa e es verdadera. Siéntase libre de agregar más de una clase si es necesario. Si no está activo, revisemos la propiedad pendiente de Es. Si es true, devuelva la clase de elemento hidro junto con la clase pendiente de elemento hidro. Ahora definamos el ítem hidroeléctrico pendiente de clase en el expediente hidrod SS Bueno, vamos a probar el color al azul claro. Vuelva al comoponente hidro aquí, cuando la propiedad e pendiente también sea falsa, aplique la clase de ítem hidro Ahora vamos a copiar todo esto pegado dentro del segundo componente N link Al probar esto en el navegador, los cambios pueden no ser evidentes de inmediato. Sin embargo, si acercamos el zoom, notaremos el color azul oscuro. Vamos a hacerlo más distinto cambiando el color a verde y aumentando el peso de la fuente a 800. Intentemos agregar un conjunto de propiedades de decoración de texto para subrayar Ahora bien, si probamos estos cambios en el navegador, ahora queda más claro qué guardado está activo y en qué página nos encontramos actualmente. 20. Domina el componente de enlace y crea una página 404 personalizada: Reaplicación con múltiples rutas, tenemos que manejar el escenario donde el usuario solicita una ruta que no existe en nuestra lista de rutas Esto significa que tenemos que manejar el error de la página no encontrada. Podemos hacerlo fácilmente dentro del archivo DGS de índice agregando un nuevo componente de ruta al final de la lista de rutas Esta vez, usaremos el atributo element, que puede contener cualquier código GSX, incluso un componente como este Sin embargo, solo renderizaremos un div con un mensaje que diga nodo de página encontrado, y agregaremos un enlace para navegar de regreso a la página principal. No queremos volver a cargar la página cuando hacemos clic en este enlace Queremos que nuestra aplicación funcione como una aplicación móvil y sea rápida. En una aplicación móvil, cuando cambias entre secciones o páginas, la aplicación móvil no se actualiza. En react, podemos usar el componente de barra NAV, igual que hicimos en el encabezado. Pero recuerde, la barra NAV solo debe usarse para los enlaces de navegación. Es por eso que el paquete dom del router react proporciona otro componente para los enlaces normales. Este componente se denomina Enlace. Asegúrate de importarlo en la parte superior. Ahora puedes usar el componente link al igual que usas un elemento de hiperenlace normal Usa etiquetas de apertura y cierre, y entre ellas, puedes agregar texto como volver a casa. Para el enlace en absoluto, use los dos atributos así. Ahora, la parte más importante aquí es el camino de esta ruta. Se debe establecer en un símbolo de estrella. De esta manera, cuando cambie la ruta URL, react router dom verificará la lista de rutas disponibles y el orden en que se definieron. Empezaré a comparar la primera ruta, que es la ruta raíz. Si los caminos no coinciden, se moverá al siguiente en orden. Si llega a una ruta con una ruta con símbolo de estrella, se detendrá y seleccionará esa ruta. Es por ello que mencioné que es necesario colocar la ruta al final de la lista de rutas. De lo contrario, nunca se alcanzará ninguna ruta que pongas por debajo de esta ruta general. Todo bien. Vamos a revisar el navegador. Como puede ver, si la ruta de ruta no existe, renderizaremos este mensaje. Cuando hagamos clic en este enlace, volveremos a la página de inicio sin recargarla. 21. Gestión del estado persistente en React: mantiene los datos en todas las rutas: Agregando rutas a nuestra aplicación, nos enfrentamos a otro reto. Cuando agregamos un elemento a la lista y luego navegamos a la página acerca de y regresamos a casa, ese artículo no estará ahí. Esto se debe simplemente a que el componente de la aplicación vuelve a renderizar cada vez que cambia la ruta, y cuando eso sucede, todos estos estados volverán a sus valores iniciales. Aquí la matriz de tareas filtradas volverá a una matriz vacía, y todos nuestros datos se perderán. Podemos solucionarlo eliminando la ruta de inicio de la lista de rutas y renderizando el componente de la aplicación directamente fuera del componente de rutas y dentro del componente de enrutador. Esto se debe a que dentro del componente de la aplicación definirá una ruta de inicio envolviendo todo el código GSX dentro del componente de rutas El componente de ruta no se puede usar fuera del componente de enrutador. Es por eso que agregamos el componente de aplicación dentro del componente de enrutador en el índice al archivo GS. Tomaré todo este código y crearé una ruta usando el componente de ruta que se refiere a la ruta de ruta. Después dentro del atributo element, agrega una etiqueta de apertura y cierre así, y pega el código que cortamos antes. Si probamos esto en el navegador, notará que la página de la nota encontrada se renderizó junto a la página de inicio. Lo arreglaremos en un momento. Pero ahora al menos cuando agreguemos un ítem a la lista y cambiemos entre rutas, el ítem estará ahí. Esto significa que el componente de la aplicación no se volvió a renderizar. Ahora eso es simplemente porque el componente de ruta siempre volverá a renderizar el componente cada vez que cambie la ruta. Lo que hicimos aquí es que hicimos solo el código GSX, la parte que se vuelve a renderizar para que no se toquen todos los estados Ahora bien, la razón por la que la página no encontrada se renderizó en la página principal es porque tenemos que poner todas nuestras rutas en un solo lugar. Lo primero que voy a hacer es tomar todo el código GSX de la página principal Cortarlo, y luego dentro de la carpeta de componentes. Crearé un nuevo componente de página y lo nombraré home. Apoyemos reaccionar de reaccionar. Defina el componente de función home. Y devolver todo el código GSX que tomamos del componente app, y no olvides exportar el componente home en la parte inferior Ahora tenemos que pasar todos estos estados y variables del componente app al componente home como props Aquí, abre un objeto y copia todas estas propiedades en tu código. También asegúrese de importar cualquier otro componente que se haya utilizado en este archivo. Ahora dentro del componente de la aplicación, usaremos el componente home aquí. Y asegúrate de portarlo en la parte superior. Quitemos puertos que ya no necesitamos. Ahora por fin, tenemos que pasar en todos los apoyos requeridos. Puede copiar y pegar la lista de props aquí y establecer cada prop en su variable correspondiente Después de hacer eso, tenemos que eliminar todas las rutas del archivo DGS de índice y colocarlas dentro del componente app Recuerde, estamos haciendo todo esto e para asegurarnos de que el componente de rutas no vuelva renderizar todo el componente de la aplicación, lo que provocaría que pierda el estado de la aplicación. Ahora aquí, en realidad podemos quitar el slash trasero y simplemente dejarlo así Si queremos establecer una ruta específica como el índice de nuestra app, como el home aquí, podemos agregar el índice de atributos sin establecerlo en ningún valor, por defecto, se establecerá en true. Dentro del archivo index to GS, tenemos que eliminar el componente routes porque en toda la aplicación, deberíamos tener solo un componente routes. También eliminemos cualquier puerto usado. Derecha. Ahora dentro del navegador, agreguemos un elemento de tarea. Cuando cambiamos entre rutas, el elemento de tarea no se eliminará. 22. Domina la obtención de datos en React: crea una página principal con integración de API: Ahora vamos a crear una mejor página acerca de. Eliminemos esto y agreguemos un elemento de profundidad con el nombre de clase un contenedor. Encontrará el archivo CSS en la sección de recursos. Ahora dentro de aquí, tendremos un elemento de herramienta H que dice sobre nuestros servicios. Detrás de él un elemento de párrafo donde podemos describir de qué se trata nuestra app. Podemos escribir. Estamos aquí para brindarle una aplicación simple de seguimiento de tareas para ayudarlo a mantenerse organizado y administrar sus tareas de manera eficiente. Guarda esto y en el navegador, verás los cambios en la página anterior. A continuación de este párrafo, tendremos otra di sección donde obtendremos algunos chistes de programación de una API Dale a este dif la sección de broma de nombre de clase. En su interior, tendremos un texto H de tres anchos que dice broma de programación. Y debajo de él, un elemento span donde renderizaremos el contenido del chiste. Básicamente, vamos a buscar una broma en cada renderizado de página. Vamos a agregar un estado U, y nombrarlo broma para guardar el chiste y establecer su valor inicial a un objeto con una propiedad de contenido establecida en null. Ahora en gas reac para obtener datos de un IBI externo, tenemos que usar el gancho gordo del usuario Al usarlo, podemos esperar a que finalice la operación Cuando termine, volveremos a renderizar la página con los datos obtenidos Mantengamos las dependencias vacías por ahora. Después dentro del efecto de uso callback, definiremos una función y la nombraremos fetch chistes Esta función será asíncrona porque queremos esperar la operación de búsqueda Dentro de él, usaremos un bloque tri catch para cualquier error potencial e imprimirlos la consola usando el método de error de punto de consola. Dentro del tri blog, declaramos una respuesta con nombre constante y usa la palabra clave de espera para detener la ejecución del código hasta que terminemos recuperar el chiste usando la función fetch Esta función aceptará el AP IURL como primer argumento Adelante y copia la URL también. Esta es una API gratuita que devuelve una broma sobre la programación en cada solicitud. A continuación, declare una constante de datos y, nuevamente, use la palabra clave de espera y llame al método JSM en la respuesta Ahora bien, este método pasa específicamente al cuerpo de respuesta como JSM JCN es solo notación de objeto JavaScript, convirtiéndola en un objeto Javascript. Cuando tenemos los datos como un objeto Javascript, podemos establecer el estado de broma y actualizar la propiedad content con data dot joke. Ahora, solo necesitamos llamar a función de chistes recuperados en la parte inferior de la devolución de llamada del efecto de uso Al mantener la matriz de dependencias vacía, el gancho de efecto de uso se ejecutará solo una vez después de que se monte el componente. Y por mount, quiero decir cuando el componente primero se renderiza en el navegador. Si guardamos esto y lo probamos en el navegador, cuando cambiemos de ruta, se activará el efecto de uso, y ahí veremos el chiste. Pero hay algo que tenemos que arreglar. Actualmente, si notas, el chiste a veces puede ser indefinido. Entonces si agregamos un registro de consola aquí y volvemos al navegador y cambiamos entre rutas para ejecutar la operación de búsqueda, y la consola, notaremos que a veces la broma es indefinida, Para solucionar esto, podemos usar una declaración if aquí y verificar si la broma es indefinida Si es así, volveremos a ejecutar la función de broma de Ft. Sí, podemos hacer eso porque en JavaScript, llamar a una función dentro de sí misma se conoce como recursión Es una técnica para resolver problemas dividiéndolos en instancias más pequeñas usando la misma función. Agrega una declaración S para manejar el caso donde tenemos una broma. En este caso, podemos actualizar el contenido del chiste. Ahora bien, si probamos esto desde el navegador, asegúrate de borrar la consola. Después ve a casa y vuelve a la página acerca de. Notarás que nos dieron el chiste. Pero en la consola, podemos ver que lo traemos dos chistes, lo que significa que el efecto de uso se ha disparado dos veces, y eso es te al estado interno del componente about page Arreglemos esto paso a paso. Primero, agreguemos un nuevo estado y nombre que está buscando. Este estado se utilizará para dejar claro en el navegador que estamos recuperando datos Establezca su valor inicial en true porque vamos a buscar los datos directamente cuando se monte el componente. A continuación, vengamos aquí cuando los datos de extracción se hayan detenido, y antes de guardar los datos, establecemos el estado de recuperación de is en false y hagamos lo mismo cuando obtengamos un dentro del bloque catch Ahora, en el código GSX, queremos informar al usuario que estamos recuperando, no piensen que nuestra app está rota o algo así Así que pon este elemento span dentro de un par de llaves y comprueba si es que la recuperación es verdadera Después devolvemos un texto que dice ir a buscar con tres puntos. Podemos probar esto en el navegador. Como pueden ver, el mensaje de búsqueda está ahí, pero desaparece muy rápido Podemos ralentizarlo abriendo la ventana Dev tools e yendo a la pestaña de red, lado aquí, busca este menú y cambiarlo de no tropezar a ralentizar tres G. Esto emulará la experiencia de navegar por Internet usando una conexión de Internet usando red móvil lenta y limitada, lo que ralentizará la obtención del estrangulador desde el Joke Esto nos ayudará a ver los mensajes de búsqueda en el navegador Al hacer esto, podemos descubrir un nuevo problema en la funcionalidad de nuestras aplicaciones. En la consola, puedes notar que el gancho de efecto de uso se activa muchas veces. En cada vez que los datos son indefinidos, y finalmente, obtenemos los datos de la API. Pero incluso entonces el efecto de uso se activa una vez más, lo que resulta en obtener dos chistes de la API Los usuarios no podrán notar esto. Nuestro trabajo como desarrolladores, es descubrir estos pequeños errores y corregirlos. Primero, agregaremos una propiedad recuperada al estado del objeto broma y estableceremos su valor inicial en true Entonces vendremos aquí antes de la función fetch joke y verificaremos si joke dot fetch está configurado en true o Si no lo es, entonces detendremos la ejecución del código con una sentencia return y no recuperaremos los datos Pero si es cierto, entonces vamos a buscar los datos Y cuando terminemos, estableceremos la propiedad buscada para forzar para que no volvamos a recuperar los datos Esta vez, dado que el efecto use depende del valor de la propiedad recuperada, debe agregarse dentro de la matriz de dependencias. Todo bien. Ahora en el navegador, si volvemos a probar la página acerca de, notaremos que el problema está empeorando. Ahora estamos recuperando los datos muchas veces. Incluso cuando tenemos datos de broma. Pero no te preocupes, este problema se puede solucionar usando una función de efecto de uso llamada limpieza después de los efectos. Esto se hace devolviendo una función de devolución de llamada al final del gancho de efecto de uso, donde podemos limpiar algunas variables En nuestro caso, queremos establecer el efecto broma propiedad a la fuerza. Ahora tenemos que agregar el objeto broma a las dependencias alejadas así Score back se ejecuta cuando el componente está desmontado, o cuando las dependencias y la dependencia y cambian Se usa comúnmente para tareas como asesoramiento, suscripciones, eliminación de oyentes de eventos o, en nuestro caso, restablecer estados a sus valores iniciales cuando el efecto ya no es necesario Esto evita fugas de memoria o comportamientos inesperados. Ahora bien, si probamos esto en el navegador, todo funcionará normalmente sin ningún problema. Ahora, tenemos que manejar una cosa más. Imagínese si la API de broma está abajo, lo que significa que no se resolverá. Por lo que los datos siempre estarán indefinidos. En ese caso, esta afirmación siempre será veraz, y terminaremos ejecutando la función fetch joke Para evitar que eso suceda, podemos declarar una variable let fuera la función fetch joke y nombrarla Fetch count Establezca su valor inicial en cero. Luego dentro del tri block al final, aumentaremos el conteo de fetch usando el operador plus plus Este javascript se llama operador de incremento de post. Se utiliza para incrementar el valor de una variable numérica en uno Dentro de esta declaración, requeriremos que el recuento de fetch sea menor o igual a dos De lo contrario, no volveremos a ejecutar la función fetch joke Todo bien. Ahora quiero mejorar un poco el código aquí. Siempre es una buena práctica reducir el número de funciones de estado de uso en tu código. Para el estado de facilidad de búsqueda, podemos retirarlo de este componente y reemplazarlo dentro del estado de broma como propiedad Ahora podemos actualizar todo en una función de estado. lado del bloque catch, si encontramos algún error, podemos establecer el contenido de broma a ninguna broma, y luego les diremos reload para que puedan recuperar los datos nuevamente y establecer fetch property para forzar y hacer lo mismo para la facilidad Aquí abajo, no olvides actualizar el código y usar el objeto broma para acceder al estado de búsqueda de facilidad Nada cambiará en el navegador, pero mantendrá las cosas en orden, y podemos evitar cualquier comportamiento extraño. No olvides restablecer la red throlling a no throlling Continuemos con la siguiente lección. 23. Domina las rutas anidadas en React.js: navega por estructuras complejas de aplicaciones: A veces es posible que queramos agregar rutas anidadas a nuestra aplicación Por rutas anidadas, me refiero a mostrar una página específica dentro de otra basada en la ruta uro Consideremos agregar una ruta instantánea dentro de la página acerca de. En este caso, necesitamos agregar una etiqueta de cierre, y luego agregar otro componente de ruta dentro de ella. Por cierto, prefiero usar la etiqueta de elemento en lugar de la etiqueta de componente, pero siéntete libre de conservarla tal cual. Ahora, este componente de ruta será de cierre automático y establecemos el atributo path a los desarrolladores. Esencialmente, estamos agregando una página que mostrará una lista de desarrolladores que contribuyeron a construir esta aplicación. Ahora vamos a establecer el atributo element a un ti con el texto dvted by o ¿sabes qué? Podemos cambiar el nombre de la base anidada a equipo en su lugar. Dentro del atributo element, renderizamos un componente llamado team. Ahora, vaya a la carpeta de componentes, cree un nuevo archivo llamado team TSX Primero, y port react from react, luego define la función. Después exportado. Dentro de este componente, devolveremos una lista de desarrolladores. Antes de eso, copie la siguiente matriz que contenga algunos nombres falsos. Usaremos esta matriz para renderizar la lista de desarrolladores. Ahora, devuelve un di y agrega un elemento H two dentro de él con los desarrolladores de texto que trabajaron en la aplicación de seguimiento de tareas. Debajo de esto, agrega un elemento de lista ordenada. Dentro de él, usaremos la función map para iterar a través de su nombre e índice Retornaremos un elemento list name, estableciendo el valor key al argumento index y colocando el argumento name dentro de llaves Ahora, guarda todo y dentro del componente ap, reemplaza este d con el componente de equipo. Ahora, si guardamos y navegamos a la ruta URO sobre el equipo de slash en el navegador, la lista de desarrolladores debería aparecer en la parte inferior Sin embargo, eso no sucede. La razón es que necesitamos ir al componente at page dentro del dev en el componente de salida, que se puede importar desde el paquete dom del router react. Al hacer esto, nos aseguramos de que el componente del equipo se renderice cuando la ruta del enrutador es igual a about slash team Ahora el componente outlet actúa como marcador de posición, mostrando contenido basado en la ruta coreana Es como una ranura donde se inserta el contenido de la ruta. Esto es especialmente útil para crear diseños anidados o alterar diferentes partes del ritmo en función de la ruta Mantiene su código organizado y facilita el cambio entre diferentes secciones de su aplicación. Todo ahora mismo, ponga en su mente que podemos agregar aún más rutas anidadas si así lo desea Por ejemplo, agreguemos una ruta que haga referencia a la ruta índice, que se renderizará cuando la ruta del enrutador sea igual a a. estamos en el lado del enrutador, lo que significa que la ruta de índice se refiere a la ruta about Esta ruta renderizará un componente de enlace diciendo conocer al equipo, refiriéndose a la ruta del equipo anterior. Estoy agregando este enlace como una ruta anidada porque quiero que aparezca en base al camino ural Es la forma más sencilla de lograrlo. Ahora, en el navegador, si navegamos desde casa hasta la página anterior, anotamos el enlace de conocer al equipo en la parte inferior. Al hacer clic en él, se cambia la ruta URL haciendo que el enlace desaparezca y se renderice el componente del equipo. Observará que al cambiar entre rutas anidadas se activa el componente padre, que es la página at que se va a volver a renderizar 24. Ponte manos a la obra con useRef: mejora tu proyecto de React: Ciertas aplicaciones web modernas. Cuando el cliente obtiene la página, el campo de entrada automáticamente será Fox para que en nuestro caso, usuario pueda comenzar a agregar elementos de tarea de inmediato. Podemos lograr esto muy fácilmente dentro del componente de formulario de tarea con el uso de un nuevo gancho de reacción llamado use RAF, que es como una etiqueta de nombre para los elementos de su código. Te ayuda a referirte a un elemento específico en el domo, para que puedas interactuar con él usando JavaScript. No solo para entradas de formularios. Puedes usarlo para cualquier elemento que quieras hacer un seguimiento. Es como poner una nota adhesiva en algo para que puedas encontrarlo fácilmente después. Cuando llamas al use raf hook, obtendrás un objeto llamado F. Podemos nombrarlo input ref. RF es como un contenedor que contiene una referencia a un elemento dom o un valor. Después dentro del elemento input, agregaremos un atributo RF y lo pondremos igual a la entrada F. De esta manera, podremos acceder al elemento input. Piense en ello como un selector de elementos de script Java. Hay una condición para usar esta ra. Solo se debe acceder cuando el elemento de entrada se renderiza en el navegador. Tenemos que usarlo dentro un gancho de efecto de uso y agregar las dependencias y mantenerlo vacío, por lo que solo se ejecutará una vez cuando el componente se monta Dentro de este uso de gancho de hechos, podemos usar la ref de entrada para acceder al valor koan del ref de la propiedad coreana Esta propiedad coreana se refiere al elemento input. Para enfocar dentro del campo de entrada, lo que significa agregar la barra de texto dentro de él, podemos llamar así al método de enfoque. Normalmente establecemos el valor inicial de la ref a null, lo que evita asumir un estado inicial y evita efectos no deseados Ahora, asegúrate de guardar todos los cambios. Después actualiza la página web en tu navegador. Al hacerlo, observará que el campo de entrada gana enfoque automáticamente. Como resultado, los usuarios pueden comenzar rápidamente a interactuar con la aplicación ingresando contenido sin necesidad de ninguna acción adicional Si quieres echar un vistazo a la ref de entrada, puedes registrarla en consola y obtendrás el elemento de entrada HTML en la consola. Ahora bien, si solo consolamos el rap de entrada, entonces dentro de la herramienta deep, obtendrás un objeto con una propiedad llamada Coan Por cierto, tenemos una r aquí diciendo que un componente está cambiando una entrada incontrolada para ser controlada Está hablando de un valor de componente que va de indefinido a definido. Esto es hablar del elemento de entrada dentro del componente de formulario de tarea. Donde establecemos su valor al estado de entrada. El problema aquí es que el valor inicial del estado no debe ser indefinido. Podemos cambiar eso fácilmente agregando una cadena vacía al use state hook como valor inicial. Ahora si actualizamos la pasta, la url no se volverá a imprimir.