<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>BITACORA by Jeferson David Camero Garcia</title>
      <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl</link>
      <description>CONCEPTOS DE JAVASCRIPT Y GENERALIDADES DE REACT</description>
      <language>en-us</language>
      <pubDate>2022-12-09 16:05:10 UTC</pubDate>
      <lastBuildDate>2025-12-24 04:28:03 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>TEMPLATE LITERALS</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416009791</link>
         <description><![CDATA[<div><br>Los literales de plantilla están encerrados por caracteres de retroceso (`) en lugar de comillas dobles o simples.<br><br></div><div>Además de tener cadenas normales, los literales de plantilla también pueden contener otras partes llamadas <em>marcadores de posición</em>, que son expresiones incrustadas delimitadas por un signo de dólar y llaves: ${expression}.<br><br>INTERPOLACIÓN DE CADENAS<br>Sin interpolación&nbsp;<br>const a = 5;<br>const b = 10;<br>console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + ".");<br>// "Fifteen is 15 and<br>// not 20."<br>Aquí podemos ver una concatenación de cadenas de texto con variables.<br><br>Con interpolación</div><div>const a = 5;<br>const b = 10;<br>console.log(`Fifteen is ${a + b} and<br>not ${2 * a + b}.`);<br>// "Fifteen is 15 and<br>// not 20."<br>Esta sintaxis ayuda a tener una estructura en el código mas legible.<br><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-09 19:55:14 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416009791</guid>
      </item>
      <item>
         <title>Arrow fuction</title>
         <author></author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416032587</link>
         <description><![CDATA[<div><em>// normalmente para asignar una función sería:&nbsp;</em></div><div><em>function</em> suma (a,b) {</div><div>&nbsp; &nbsp; <em>return</em> a + b</div><div>}</div><div><br></div><div><em>const</em> resutlado = suma(1 , 5)</div><div><br></div><div><em>// son funciones como valores, podemos tomar una funcion y asignarsela a una constante o una variable. Lo primero es asignar cuantos argumentos tiene la función, luego se agrega =&gt;, inmediatamente se asigna la fuction, cuando solo hay una linea, tiene un return implicito.</em></div><div><br></div><div><em>const</em> suma = (a,b) <em>=&gt;</em> a + b</div><div><em>const</em> resultado = suma (1,5)</div><div><br><br></div><div><em>// tambien es posible asignar más de una sola instrucción</em></div><div><br></div><div><em>const</em> suma = (a,b) <em>=&gt;</em> {</div><div>&nbsp; &nbsp; <em>const</em> c = a + b</div><div>&nbsp; &nbsp; <em>return</em> c + 1</div><div>}</div><div><br></div><div><em>const</em> resultado = suma (1,5)</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-09 20:27:35 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416032587</guid>
      </item>
      <item>
         <title>CREATE-REACT-APP</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416088158</link>
         <description><![CDATA[<div>Una manera muy sencilla de crear un proyecto con React es utilizando <strong>Create React App</strong>, así puedes <strong>iniciar un proyecto</strong> sin preocuparte por la configuración de herramientas como webpack o babel.<br><br><strong>Webpack</strong>: Es un module bundler que nos permite trabajar con una variedad de tecnologías web empezando desde HTML y terminando con JS. Además de tener soporte para archivos estáticos<br>Documentacion de los module bundler <a href="https://dev.to/tanhauhau/what-is-module-bundler-and-how-does-it-work-3gp2">https://dev.to/tanhauhau/what-is-module-bundler-and-how-does-it-work-3gp2</a><br><br><strong>Babel</strong>: Babel es un "compilador" (o transpilador) para JavaScript. Básicamente permite transformar código escrito con las últimas y novedosas características de JavaScript y transformarlo en un código que sea entendido por navegadores más antiguos.<br><br>Aunque siempre será mejor si nosotros hacemos esta configuración desde cero, ya que tendremos mayor control de todo e incluso nuestra aplicación tendría un mejor rendimiento.<br><br></div><div><strong>Maneras de instalar React</strong></div><div>Existen varias formas de trabajar con React, cada una tiene sus ventajas y desventajas, siempre que trabajemos con React necesitaremos las dependencias react y react-dom.<br><br>1. React en JavaScript vanilla<br>2. Configuración manual desde cero<br>3. <strong>Create React App<br></strong><br></div><div><strong>Entorno de Create React App<br>&nbsp; &nbsp; &nbsp;</strong>Esta es la manera más simple y rápida para trabajar con React, solo necesitamos ejecutar el comando: <br><strong>npx create-react-app nombre-del-proyecto</strong> <br>O<br><strong>npx create-react-app nombre-del-proyecto --template typescript<br><br></strong>De esta manera ya tendríamos nuestro entorno de desarrollo configurado para comenzar.<br><br><strong>&nbsp;Características del entorno<br>&nbsp; &nbsp; &nbsp;</strong>Dentro de este entorno tenemos un <strong>archivo package.json </strong>en el que se encuentran nuestros scripts, dependencias y meta datos de nuestro proyecto, también tendremos<strong> dos carpetas principales:<br></strong><br></div><ol><li><strong>public/:</strong> Es la carpeta pública en donde tendremos nuestro archivo HTML y algunos assets</li><li><strong>src/:</strong> Es la carpeta fuente, en donde tendremos todos nuestros archivos de trabajo</li></ol><div><strong>¿Cómo inicializar nuestro servidor?</strong></div><div>&nbsp; &nbsp; &nbsp;Para iniciar el entorno de desarrollo podemos ejecutar el comando <strong>npm start</strong>, con esto tendremos nuestro servidor corriendo en el puerto 3000 y también se refrescará automáticamente con cualquier cambio hecho en el proyecto. (A excepción de los cambios hechos en el archivo index.js<br><br><br><em>Contribución creada por: Brandon Argel</em>.</div><div><br><br></div>]]></description>
         <enclosure url="https://dev.to/tanhauhau/what-is-module-bundler-and-how-does-it-work-3gp2" />
         <pubDate>2022-12-09 22:16:53 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2416088158</guid>
      </item>
      <item>
         <title>VITE</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2421999450</link>
         <description><![CDATA[<div><br>Vite, es una herramienta de compilación que tiene como objetivo proporcionar una experiencia de desarrollo más rápida y ágil para proyectos web modernos. Consta de dos partes principales:<br><br></div><ul><li>Un servidor de desarrollo que proporciona <a href="https://es.vitejs.dev/guide/features.html">mejoras enriquecidas de funcionalidades</a> sobre <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules">módulos ES nativos</a>, por ejemplo <a href="https://es.vitejs.dev/guide/features.html#hot-module-replacement">Hot Module Replacement (HMR)</a> extremadamente rápido.<br><br></li><li>Un comando de compilación que empaqueta tu código con <a href="https://rollupjs.org/">Rollup</a>, preconfigurado para generar recursos estáticos altamente optimizados para producción.</li></ul><div><br>FUENTE:<br><em>Vite</em>. (s. f.). https://es.vitejs.dev/guide/</div><div><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 15:38:54 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2421999450</guid>
      </item>
      <item>
         <title>VIRTUAL DOM</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422057169</link>
         <description><![CDATA[<div><br>Es más un patrón que una tecnología específica, las personas a veces le dan significados diferentes. En el mundo de React, el término “DOM virtual” es normalmente asociado con <a href="https://es.reactjs.org/docs/rendering-elements.html">elementos de React</a> ya que son objetos representando la interfaz de usuario. Sin embargo, React también usa objetos internos llamados “fibers” para mantener información adicional acerca del árbol de componentes. Éstos pueden ser también considerados como parte de la implementación de “DOM virtual” de React.<br><br></div><div>¿Qué es “React Fiber”?</div><div>Fiber es el nuevo motor de reconciliación en React 16. Su principal objetivo es permitir el renderizado incremental del DOM virtual.<br><br>FUENTE<br><em>Vite</em>. (s. f.). https://es.vitejs.dev/guide/<br><br><br></div><div><br><br></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854371650/d5d781b4e05f607c110e80f9fb919ee3/image.png" />
         <pubDate>2022-12-15 16:23:08 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422057169</guid>
      </item>
      <item>
         <title>ESTRUCTURA DE ARCHIVOS</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422139961</link>
         <description><![CDATA[<div>Tipos de estructuras para organizar proyectos:<br>1. Estructura por tipo de fichero<br>2. Estructura por funcionalidad o modular</div><div>3. Estructura basada en Atomic design<br>4. Estructura basada en la arquitectura hexagonal<br><br></div><div>Si te sientes completamente atascado, comienza por mantener todos los archivos en una sola carpeta. Eventualmente crecerá lo suficiente como para que quieras separar algunos archivos del resto. Para ese momento, tendrás suficiente conocimientos para saber qué archivos editas juntos con mayor frecuencia. En general, es una buena idea mantener los archivos que a menudo cambian juntos cerca unos de otros. Este principio se llama “colocación”.<br><br>Diferencias de CRM y VITE&nbsp;<br><br>Importaciones absolutas</div><div>Cuando comiences a desarrollar con Vite, lo primero que probablemente notarás es la diferencia en la resolución de rutas. A diferencia de CRA, Vite no tiene una ruta src incorporada.<br><br>Variables de entorno</div><div>Otra diferencia entre Create React App y Vite es la convención de nomenclatura de variables de entorno. Si usa variables de entorno en el proyecto, querrá reemplazar el prefijo REACT_APP_ por VITE_.<br><br></div><div><br><br>FUENTES<br>Mas, T. (2021, 8 febrero). <em>4 estructuras para organizar tu proyecto de React y React Native</em>. Reboot Blog - Product development, UX/UI design and software. https://reboot.studio/blog/es/estructuras-organizar-proyecto-react/</div><div><em>Vite</em>. (s. f.). https://es.vitejs.dev/guide/</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 17:28:05 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422139961</guid>
      </item>
      <item>
         <title>JSX</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422171954</link>
         <description><![CDATA[<div><strong>JSX</strong> es una extensión de JavaScript creada por Facebook para el uso con la biblioteca <strong>React</strong>. Sirve de preprocesador (como Sass o Stylus a CSS) y transforma el código generado con <strong>React</strong> a JavaScript. <strong>JSX</strong> tiene su alternativa <strong>que es React</strong>. createElement pero es preferible <strong>JSX</strong> porque es mucho más legible y expresivo.<br><br>En el ejemplo a continuación, declaramos una variable llamada name y luego la usamos dentro del JSX envolviéndola dentro de llaves:</div><pre>//Ejemplo insertando expresiones
const name = 'Jeferson Camero';
const element = &lt;h1&gt;Hello, {name}&lt;/h1&gt;;</pre><div><br>FUENTES<br><em>Platzi: Cursos online profesionales de tecnología</em>. (s. f.). https://platzi.com/clases/1548-react-2019/18694-jsx/</div><div><em>Vite</em>. (s. f.). https://es.vitejs.dev/guide/</div><div><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 17:55:12 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422171954</guid>
      </item>
      <item>
         <title>COMPONENTES Y PROP</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422310896</link>
         <description><![CDATA[<div>Los componentes permiten separar la interfaz de usuario en piezas independientes, reutilizables y pensar en cada pieza de forma aislada.<br><br>Conceptualmente, los componentes son como las funciones de JavaScript. Aceptan entradas arbitrarias (llamadas “props”) y retornan elementos de React que describen lo que debe aparecer en la pantalla.</div><div><br></div><div>Componentes funcionales</div><pre>function Welcome(props) {
  return &lt;h1&gt;Hello, {props.name}&lt;/h1&gt;;
}</pre><div>Esta función es un componente de React válido porque acepta un solo argumento de objeto “props” (que proviene de propiedades) con datos y devuelve un elemento de React. Llamamos a dichos componentes “funcionales” porque literalmente son funciones JavaScript.<br><br>Componentes de clase<br>Ejemplo de una <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Classes">clase de ES6</a> para definir un componente.</div><pre>class Welcome extends React.Component {
  render() {
    return &lt;h1&gt;Hello, {this.props.name}&lt;/h1&gt;;
  }
}</pre><div><br><br>PROPS<br>Las props son una forma de pasar datos o información de un componente de una aplicación de software a otro. En el desarrollo de aplicaciones, a menudo se utilizan componentes que son piezas reutilizables de código que se pueden combinar para formar la interfaz de usuario de una aplicación. Las props permiten a los componentes compartir información entre sí, lo que les permite interactuar y trabajar juntos para crear la aplicación final. Las props se definen y se pasan a los componentes como parámetros en su declaración o invocación, y luego se pueden acceder dentro del componente para utilizar la información que se les ha pasado.<br><br>FUENTES</div><div><em>Vite</em>. (s. f.). https://es.vitejs.dev/guide/</div><div><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:10:46 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422310896</guid>
      </item>
      <item>
         <title>ESTILOS DE CSS EN REACT</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422326223</link>
         <description><![CDATA[<div>En React, el estilo de un componente se puede definir utilizando CSS de dos maneras principales: mediante el uso de archivos externos de estilo CSS o mediante el uso de la propiedad <strong>style</strong> del componente.<br><br></div><div><br>Para utilizar archivos externos de estilo CSS, primero se deben importar al archivo JavaScript que contiene el componente en el que se desea aplicar el estilo. Esto se hace utilizando la palabra clave <strong>import</strong> y especificando la ruta del archivo de estilo que se desea importar. Una vez que el archivo de estilo ha sido importado, se puede aplicar a un componente mediante la especificación de la etiqueta <strong>className</strong> en el elemento que se desea estilizar.<br><br></div><div><br>Por otro lado, la propiedad <strong>style</strong> del componente permite definir estilos directamente en el código JavaScript que contiene el componente. Para utilizar esta propiedad, se debe especificar un objeto de estilo que contenga las reglas de estilo que se desean aplicar. Estas reglas se especifican como pares clave-valor, donde la clave es el nombre de la propiedad de estilo y el valor es el valor que se desea asignar a esa propiedad. Luego, se puede aplicar el objeto de estilo a un elemento del componente mediante la asignación de la propiedad <strong>style</strong> al elemento.<br><br></div><div><br>En resumen, en React se puede utilizar CSS mediante archivos externos o mediante la propiedad <strong>style</strong> del componente, dependiendo de las necesidades y preferencias del desarrollador.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:28:21 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422326223</guid>
      </item>
      <item>
         <title>STYLED COMPONENTS</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422330129</link>
         <description><![CDATA[<div>Styled Components es una biblioteca de JavaScript que permite definir estilos para los componentes de una aplicación de manera más sencilla y elegante. Esta biblioteca utiliza la sintaxis de JavaScript para crear componentes estilizados que se pueden utilizar en una aplicación de React como si fueran componentes normales.<br><br></div><div><br>Styled Components permite definir estilos en línea directamente en el código JavaScript que contiene el componente, lo que hace que el código sea más limpio y legible. Además, permite utilizar características avanzadas de CSS, como el anidamiento de reglas de estilo y la interpolación de variables, lo que facilita la creación de estilos complejos y reutilizables.<br><br></div><div><br>Para utilizar Styled Components, primero se debe instalar la biblioteca utilizando un gestor de paquetes, como npm o yarn. Luego, se pueden crear componentes estilizados utilizando la función <strong>styled</strong> de la biblioteca, que toma como argumento el tipo de elemento que se desea estilizar. Esta función devuelve un nuevo componente que tiene todos los estilos especificados en línea aplicados. Finalmente, el nuevo componente se puede utilizar en la aplicación de React como cualquier otro componente.</div><div><br></div><div><br></div><div><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:33:26 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422330129</guid>
      </item>
      <item>
         <title>MANEJO DE EVENTOS</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422333184</link>
         <description><![CDATA[<div>En React, los eventos son acciones que ocurren en la interfaz de usuario de una aplicación y que pueden ser detectadas y manejadas por el código de la aplicación. Estos eventos pueden ser acciones del usuario, como hacer clic en un botón, o acciones del sistema, como cambios en el tamaño de la ventana del navegador.<br><br></div><div><br>Para manejar eventos en React, se utiliza la sintaxis de JavaScript para especificar qué función debe ejecutarse cuando se produce el evento en cuestión. Esto se hace asignando la función como el valor de la propiedad <strong>on&lt;Event&gt;</strong> del elemento al que se desea agregar el manejador de eventos. Por ejemplo, para agregar un manejador de eventos de clic a un botón, se puede utilizar la propiedad <strong>onClick</strong> del botón y asignarle la función que se desea que se ejecute cuando se haga clic en el botón.<br><br></div><div><br>En general, React utiliza una sintaxis ligeramente diferente para especificar los nombres de los eventos en comparación con el código JavaScript tradicional. En lugar de usar el nombre del evento en minúsculas, como <strong>click</strong> o <strong>mouseover</strong>, React utiliza el nombre del evento en camel case, como <strong>onClick</strong> o <strong>onMouseOver</strong>. Esto se debe a que las propiedades de los elementos en React deben ser especificadas en camel case.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:37:29 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422333184</guid>
      </item>
      <item>
         <title>FORMIK</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422341755</link>
         <description><![CDATA[<div>Formik es una biblioteca de JavaScript para React que facilita la creación y el manejo de formularios en una aplicación. Esta biblioteca proporciona un conjunto de componentes y funcionalidades que permiten validar y enviar formularios de manera sencilla y consistente, sin tener que escribir mucho código personalizado.<br><br></div><div><br>Formik permite definir formularios utilizando componentes de React y proporciona funcionalidades para validar los datos ingresados por el usuario, mostrar mensajes de error y realizar el envío de los datos del formulario a un servidor. Además, integra bien con otras bibliotecas de React, como Redux y Yup, lo que facilita el trabajo con formularios en aplicaciones más grandes y complejas.<br><br></div><div><br>Para utilizar Formik, primero se debe instalar la biblioteca utilizando un gestor de paquetes, como npm o yarn. Luego, se puede crear un formulario utilizando el componente <strong>Formik</strong> de la biblioteca y especificando las propiedades y los elementos del formulario como hijos del componente <strong>Formik</strong>. Finalmente, se pueden utilizar las funcionalidades de Formik para validar y enviar el formulario según sea necesario.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:49:13 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422341755</guid>
      </item>
      <item>
         <title>FORMIK</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422345369</link>
         <description><![CDATA[<div>Formik es una biblioteca de JavaScript para React que facilita la creación y el manejo de formularios en una aplicación. Esta biblioteca proporciona un conjunto de componentes y funcionalidades que permiten validar y enviar formularios de manera sencilla y consistente, sin tener que escribir mucho código personalizado.<br><br></div><div><br>Formik permite definir formularios utilizando componentes de React y proporciona funcionalidades para validar los datos ingresados por el usuario, mostrar mensajes de error y realizar el envío de los datos del formulario a un servidor. Además, integra bien con otras bibliotecas de React, como Redux y Yup, lo que facilita el trabajo con formularios en aplicaciones más grandes y complejas.<br><br></div><div><br>Para utilizar Formik, primero se debe instalar la biblioteca utilizando un gestor de paquetes, como npm o yarn. Luego, se puede crear un formulario utilizando el componente <strong>Formik</strong> de la biblioteca y especificando las propiedades y los elementos del formulario como hijos del componente <strong>Formik</strong>. Finalmente, se pueden utilizar las funcionalidades de Formik para validar y enviar el formulario según sea necesario.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:54:47 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422345369</guid>
      </item>
      <item>
         <title>MANEJO DE RUTAS V6</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422346065</link>
         <description><![CDATA[<div>El enrutamiento se refiere a la habilidad de una aplicación para mostrar distintas páginas o vistas en función de la dirección URL que se está utilizando.<br><br></div><div><br>React Router V6 proporciona un conjunto de componentes que permiten definir las distintas rutas de una aplicación y mostrar los componentes correspondientes según la dirección URL actual. Además, permite agregar características comunes en aplicaciones enrutadas, como enlaces entre diferentes rutas y gestión del historial del navegador.<br><br></div><div><br>Para utilizar React Router V6, primero se debe instalar la biblioteca utilizando un gestor de paquetes, como npm o yarn. Luego, se pueden crear las rutas de la aplicación utilizando el componente <strong>Router</strong> de la biblioteca y especificando las rutas y los componentes correspondientes como hijos del componente <strong>Router</strong>. Finalmente, se puede utilizar el componente <strong>Link</strong> de la biblioteca para crear enlaces que naveguen entre las diferentes rutas de la aplicación.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 20:55:59 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422346065</guid>
      </item>
      <item>
         <title>VERSIONES DE ENRUTADORES EN REACT</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422368639</link>
         <description><![CDATA[<div>Existen varias versiones del enrutador de React, cada una con diferentes características y funcionalidades. Las principales versiones son las siguientes:<br><br></div><ul><li>React Router V6: Esta es la última versión del enrutador de React, y se enfoca en proporcionar una sintaxis sencilla y limpia para definir las rutas de una aplicación. Esta versión también permite utilizar Hooks de React para manejar el estado y la lógica del enrutamiento, lo que facilita la creación de aplicaciones enrutadas.</li><li>React Router V5: Esta versión es anterior a React Router V6 y utiliza una sintaxis ligeramente diferente para definir las rutas de una aplicación. Además, esta versión no admite Hooks de React y utiliza un enfoque basado en clases para manejar el estado y la lógica del enrutamiento.</li><li>React Router V4: Esta es una versión aún más antigua del enrutador de React y utiliza una sintaxis y un enfoque diferentes a las versiones más recientes. Esta versión se utiliza en aplicaciones muy antiguas que todavía no se han actualizado a versiones más recientes del enrutador.</li></ul>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 21:33:39 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422368639</guid>
      </item>
      <item>
         <title>CONSUMIR API CON FETCHING</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422375242</link>
         <description><![CDATA[<div>Para consumir una API utilizando el método Fetching, primero necesitará obtener la URL de la API y verificar si se requieren credenciales de autenticación para acceder a ella. Una vez que tenga la URL y las credenciales necesarias (si las hay), puede utilizar el método <strong>fetch()</strong> de JavaScript para enviar una solicitud a la API. Este método devolverá una promesa que puede utilizar para obtener la respuesta de la API y analizarla.</div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 21:46:10 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422375242</guid>
      </item>
      <item>
         <title>CONSUMIR API CON AXIOS</title>
         <author>jefersoncamero</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422379152</link>
         <description><![CDATA[<div>Axios es una biblioteca de JavaScript que se utiliza para realizar solicitudes HTTP. Axios proporciona una interfaz simple y fácil de usar que permite enviar solicitudes HTTP y manejar las respuestas de manera eficiente.<br><br></div><div><br>Axios se puede utilizar en aplicaciones de Node.js o en aplicaciones de navegador utilizando una biblioteca de empaquetado como Webpack o Browserify. Para utilizar Axios en su aplicación, primero debe instalar la biblioteca utilizando npm o un gestor de paquetes similar. Una vez que haya instalado Axios, puede importarla en su código y utilizarla para realizar solicitudes HTTP.<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-15 21:52:31 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2422379152</guid>
      </item>
      <item>
         <title>Shorthand property names </title>
         <author></author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423169689</link>
         <description><![CDATA[<div>Siempre que tenga una variable que tenga el mismo nombre que una propiedad en un objeto, al construir el objeto, puede omitir el nombre de la propiedad.<br><br></div><div><br>function formatMessage (name, id, avatar) {<br><br></div><div><br>&nbsp; return {<br><br></div><div><br>&nbsp; &nbsp; name: name,<br><br></div><div><br>&nbsp; &nbsp; id: id,<br><br></div><div><br>&nbsp; &nbsp; avatar: avatar,<br><br></div><div><br>&nbsp; &nbsp; timestamp: Date.now()<br><br></div><div><br>&nbsp; }<br><br></div><div><br>}<br><br></div><pre>Ahora se  ve de esta manerafunction formatMessage (name, id, avatar) {  return {    name,    id,    avatar,    timestamp: Date.now()  }}</pre><div><br>&nbsp;<br><br></div><div>Ahora, ¿y si una de esas propiedades fuera una función? Una función que es una propiedad de un objeto se llama método. Con los nombres de métodos abreviados de ES6, puede omitir la palabra clave de función por completo. Lo que eso significa es que el código que solía verse así<br><br></div><pre>function formatMessage (name, id, avatar) {  return {    name,    id,    avatar,    timestamp: Date.now(),    save: function () {      // save message    }  }}</pre><div><br>Ahora se ve asi<br><br></div><pre>function formatMessage (name, id, avatar) {  return {    name,    id,    avatar,    timestamp: Date.now(),    save () {      //save message    }  }}</pre>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 16:06:34 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423169689</guid>
      </item>
      <item>
         <title>Destructuring </title>
         <author></author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423184018</link>
         <description><![CDATA[<div>Arrays:<br><br></div><div><em>Destructuring</em> nos da una manera de extraer datos de objetos o arreglos y asignarlos a variables.<br><br></div><div>con la función de <em>destructuring</em> en ES2015 lo haríamos de la manera:<br><br></div><pre>const [a,b,c] = array;// a = 'pato'// b = 'ganzo'// c = 'pollo</pre><div>&nbsp;<br><br></div><div>i quisiéramos ignorar un elemento, podríamos realizar la asignación de la siguiente forma:<br><br></div><pre>const [a,,c] = array; // a = 'pato'// c = 'pollo'</pre><div>&nbsp;imagina que tienes dos variables y deseas intercambiar su valor, en ES5 tendríamos que crear una variable temporal para esto, pero con <em>destructuring</em> bastaría con hacer:<br><br></div><pre>let x = 2;let y = 5; [x,y] = [y,x]; // x = 5// y = 2</pre><div><strong>Objetos<br></strong><br></div><pre>const objeto = {  a: ‘casa’,  b: ‘apartamento’};</pre><div>Como asignariamos las propiedades de_ objeto_ a variables en ES5<br><br></div><pre>var a = objeto.a;var b = objeto.b;</pre><div><strong>&nbsp;<br></strong><br></div><div>Con <em>destructuring</em> en ES2015, lo hariamos asi<br><br></div><pre>const {a,b} = objeto; //a = 'casa'//b = 'apartamento'</pre><div>asignar las propiedades del objeto, con nombres de variable diferentes, lo hacemos de la forma</div><pre>const {a:uno,b:dos} = objeto; //uno = 'casa'//dos = 'apartamento'</pre>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 16:21:25 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423184018</guid>
      </item>
      <item>
         <title>Default Parameters </title>
         <author></author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423190783</link>
         <description><![CDATA[<div>permiten que los parámetros con nombre se inicien con valores predeterminados si no se pasa ningún valor o undefined.<br><br></div><div>Normalmente se estableceria de la siguiente forma&nbsp;<br><br></div><pre>function multiply(a, b) {  return a * b} multiply(5, 2)  // 10multiply(5)     // NaN !</pre><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br><br></div><div>Para protegerte contra esto, usarías algo como la segunda línea, donde b se establece en 1 si llamas a multiply con un solo argumento:</div><pre>function multiply(a, b) {  b = (typeof b !== 'undefined') ?  b : 1  return a * b} multiply(5, 2)  // 10multiply(5)     // 5</pre><div>las comprobaciones en el cuerpo de la función ya no son necesarias. Ahora, puedes asignar 1 como valor predeterminado para b en el encabezado de la función:</div><pre>function multiply(a, b = 1) {  return a * b} multiply(5, 2)          // 10multiply(5)             // 5multiply(5, undefined)  // 5</pre>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 16:27:35 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423190783</guid>
      </item>
      <item>
         <title>Operadores Ternarios</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423332894</link>
         <description><![CDATA[<div>El <strong>operador condicional</strong> (<strong>ternario</strong>) es el único operador en JavaScript que tiene tres operandos. Este operador se usa con frecuencia como atajo para la instrucción <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/if...else">if</a>.<br><br></div><pre>"La Cuota es de:  " + (isMember ? "$2.00" : "$10.00")</pre><div>&nbsp;realizar evaluaciones ternarias múltiples (Nota: El operador condicional es asociativo):<br><br></div><pre>var firstCheck = false,    secondCheck = false,    access = firstCheck ? "Acceso Denegado" : secondCheck ? "Acceso Denegado" : "Acceso Permitido"; console.log( access ); // muestra "Acceso Permitido"</pre><div>&nbsp;<br><br></div><pre>var stop = false, age = 23; age &gt; 18 ? (    alert("OK, puedes continuar."),    location.assign("continue.html")) : (    stop = true,    alert("Disculpa, eres menor de edad!"));</pre>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 19:17:35 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423332894</guid>
      </item>
      <item>
         <title>Map</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423341380</link>
         <description><![CDATA[<div><strong>map()</strong> : Permite recorrer el array y modificar los elementos presentes en él, retornando un nuevo array con la misma longitud que el original.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/86add2a25dd382a1e70c1679aedb3466/f25rnjq2j6wuhugxzi2a.png" />
         <pubDate>2022-12-16 19:30:04 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423341380</guid>
      </item>
      <item>
         <title>Filter</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423342958</link>
         <description><![CDATA[<div><strong>filter()</strong> : Recorre el array y retorna un nuevo array con aquellos elementos que pasen una determinada condición.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/2b344f54eb6ce44dd6de88d9ac0b7064/h6447ms3disaktwi74os.png" />
         <pubDate>2022-12-16 19:32:39 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423342958</guid>
      </item>
      <item>
         <title>For Each</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423344052</link>
         <description><![CDATA[<div><strong>forEach()</strong> : Permite iterar el contenido de un array. Recibe un callback que toma como parámetro el elemento actual de la iteración y el indice del mismo.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/58b1b8592a65a686664573e7b0efea67/image.png" />
         <pubDate>2022-12-16 19:34:26 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423344052</guid>
      </item>
      <item>
         <title>find</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423344957</link>
         <description><![CDATA[<div><strong>find()</strong> : Recorre el array y retorna la primera coincidencia del elemento que se busca.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/63a4f11d03490f173dbe032034dc0bd6/yipdbg0l4wnbt2ybm3bl.png" />
         <pubDate>2022-12-16 19:35:48 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423344957</guid>
      </item>
      <item>
         <title>Sort</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347099</link>
         <description><![CDATA[<div><strong>sort()</strong> : Ordena los elementos del array y retorna el arreglo ordenado. Los elementos se ordenarán en orden ascendente (de la A a la Z) por defecto.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/d64b0a5a7823aa84bc051ef2947d1239/sort.png" />
         <pubDate>2022-12-16 19:39:18 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347099</guid>
      </item>
      <item>
         <title>Some</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347349</link>
         <description><![CDATA[<div><strong>some()</strong> : Itera el array y retorna un booleano si como mínimo uno de los elementos presentes en el array pasa una condición determinada. Recibe un callback que se encargara de preguntar aquello que queremos dentro del array.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/ac5086044f0d439a282d697a6132fa79/some.png" />
         <pubDate>2022-12-16 19:39:47 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347349</guid>
      </item>
      <item>
         <title>Every</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347852</link>
         <description><![CDATA[<div><strong>every()</strong> : Es similar al some(), ya que itera el array y retorna un booleano. Pero esta vez, para que dicho booleano sea true todos los elementos del array deberán pasar la condición dada.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/b551d6f46f6aa93dc42440fee81cf383/every.png" />
         <pubDate>2022-12-16 19:40:34 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423347852</guid>
      </item>
      <item>
         <title>includes()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423349253</link>
         <description><![CDATA[<div>Determina si un array incluye un determinado elemento y retorna un booleano según corresponda.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/7e78025ebd245108ce0aa8bd6049e576/includes.jfif" />
         <pubDate>2022-12-16 19:42:54 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423349253</guid>
      </item>
      <item>
         <title>join()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350176</link>
         <description><![CDATA[<div><strong>join()</strong> : Une todos los elementos de un array en una cadena. Podemos pasarle como parámetro el carácter de separación que debe agregar entre los elementos.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/ce30ef246146671beb55baf9ca28ef49/join.png" />
         <pubDate>2022-12-16 19:44:39 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350176</guid>
      </item>
      <item>
         <title>reduce()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350379</link>
         <description><![CDATA[<div><strong>reduce()</strong> : Aplica una función a un acumulador y a cada valor de una array (de izquierda a derecha) para reducirlo a un único valor.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/ce32ee37a1e8e8ac0db5605f3ed1c0c4/reduce.png" />
         <pubDate>2022-12-16 19:45:03 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350379</guid>
      </item>
      <item>
         <title>indexOf()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350709</link>
         <description><![CDATA[<div><strong>indexOf()</strong> : Retorna el primer índice en el que se puede encontrar un elemento dado en el array, ó retorna -1 si el elemento no esta presente.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/ba8459fee0f6419df10641f4adea276e/indexof.jfif" />
         <pubDate>2022-12-16 19:45:35 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423350709</guid>
      </item>
      <item>
         <title>findIndex()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423351167</link>
         <description><![CDATA[<div><strong>findIndex()</strong> : Retorna el índice del primer elemento de un array que cumpla con la función de prueba proporcionada. En caso contrario devuelve -1.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/5190249c6744f3b1ed1f100269eac799/findindex.png" />
         <pubDate>2022-12-16 19:46:22 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423351167</guid>
      </item>
      <item>
         <title>fill()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423351847</link>
         <description><![CDATA[<div><strong>fill()</strong> : Cambia todos los elementos de un array por un valor estático, desde el índice de inicio hasta el índice final. Retorna el array modificado.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/10ba308f702e4293c575ac42904688a0/fill.png" />
         <pubDate>2022-12-16 19:47:40 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423351847</guid>
      </item>
      <item>
         <title>push()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352191</link>
         <description><![CDATA[<div><strong>push()</strong> : Añade uno o más elementos al final de un array y devuelve la nueva longitud del array.<br><a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LnW0qgCn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khv934b2k2qaqwft8q0f.png">&nbsp;</a></div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/873be57713757953c1270a004562581b/push.png" />
         <pubDate>2022-12-16 19:48:19 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352191</guid>
      </item>
      <item>
         <title>pop()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352545</link>
         <description><![CDATA[<div><strong>pop()</strong> : Elimina el último elemento de un array y lo devuelve. Este método cambia la longitud del array.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/62e7274a4f1dbb0bcedfe75c5f7f961b/pop.jfif" />
         <pubDate>2022-12-16 19:48:57 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352545</guid>
      </item>
      <item>
         <title>shift()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352775</link>
         <description><![CDATA[<div><strong>shift()</strong> : Elimina el primer elemento del array y lo retorna. Este método modifica la longitud del array.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/af4097e36c85a433b610647d98ba51b6/shift.jfif" />
         <pubDate>2022-12-16 19:49:24 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423352775</guid>
      </item>
      <item>
         <title>unshift()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353010</link>
         <description><![CDATA[<div><strong>unshift()</strong> : Agrega uno o más elementos al inicio del array, y devuelve la nueva longitud del array.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/31b4efa5eda459776d9a84ba18661825/unshift.png" />
         <pubDate>2022-12-16 19:49:51 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353010</guid>
      </item>
      <item>
         <title>slice()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353199</link>
         <description><![CDATA[<div><strong>slice()</strong> : Devuelve una copia de una parte del array dentro de un nuevo array empezando por inicio hasta fin (fin no incluido). El array original no se modificará.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/1c6b3e74c2c12818adae303e2c236269/slice.jfif" />
         <pubDate>2022-12-16 19:50:13 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353199</guid>
      </item>
      <item>
         <title>reverse()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353509</link>
         <description><![CDATA[<div>r<strong>everse()</strong> : Invierte el orden de los elementos de un array. El primer elemento pasa a ser el último y el último pasa a ser el primero.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/8d693f90c6ba37722dda76d521c65f60/reverse.png" />
         <pubDate>2022-12-16 19:50:43 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353509</guid>
      </item>
      <item>
         <title>splice()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353775</link>
         <description><![CDATA[<div><strong>splice()</strong> : Cambia el contenido de un array eliminando elementos existentes y/o agregando nuevos elementos.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/dfe2d9f6cc084d31935ca626cad34699/splice.png" />
         <pubDate>2022-12-16 19:51:05 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423353775</guid>
      </item>
      <item>
         <title>lastIndexOf()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354279</link>
         <description><![CDATA[<div><strong>lastIndexOf()</strong> : Busca un elemento en un array y devuelve su posición. Comienza buscando por el final del array. Retorna -1 si el elemento no se encontrara.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/a6c888dbf341877595a0937f9d5d15d1/lastIdexOf.png" />
         <pubDate>2022-12-16 19:51:56 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354279</guid>
      </item>
      <item>
         <title>flat()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354544</link>
         <description><![CDATA[<div><strong>flat()</strong> : Crea una nuevo array con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/115ed6eec72a622404c231b08a54c992/flat.png" />
         <pubDate>2022-12-16 19:52:23 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354544</guid>
      </item>
      <item>
         <title>isArray()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354793</link>
         <description><![CDATA[<div><strong>isArray()</strong> : Determina si el valor pasado es un Array.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/8f1cb6c4df12b6e2e118a3a12e7f6b90/isArray.png" />
         <pubDate>2022-12-16 19:52:53 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423354793</guid>
      </item>
      <item>
         <title>from()</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423355142</link>
         <description><![CDATA[<div><strong>from()</strong> : Crea una nueva instancia de Array a partir de un objeto iterable.</div>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1854376140/a982cf26fbc4ec76e2107f0321c5dda8/from.png" />
         <pubDate>2022-12-16 19:53:27 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423355142</guid>
      </item>
      <item>
         <title>Promesa</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423358980</link>
         <description><![CDATA[<div>&nbsp;Cuando trabajamos con operaciones asíncronas en JavaScript, a menudo escuchamos el término Promise (Promesa).<br><br></div><div>Un “código productor” que hace algo y toma tiempo.<br><br></div><div>Un “código consumidor” que quiere el resultado del “código productor” una vez que está listo.&nbsp;<br><br></div><div>Una <em>promesa</em> es un objeto JavaScript especial que une el “código productor” y el “código consumidor”.<br><br></div><div>Sintaxis del constructor<br><br></div><div>let promise = new Promise(function(resolve, reject) {</div><div>&nbsp; // Ejecutor (el código productor, "cantante")</div><div>});<br><br></div><div>La función pasada a new Promise se llama <em>ejecutor</em>. Cuando se crea new Promise, el ejecutor corre automáticamente. Este contiene el código productor que a la larga debería producir el resultado<br><br></div><div>Sus argumentos resolve y reject son callbacks proporcionadas por el propio JavaScript. Nuestro código solo está dentro del ejecutor.<br><br></div><div>Cuando el ejecutor, más tarde o más temprano, eso no importa, obtiene el resultado, debe llamar a una de estos callbacks:<br><br></div><ul><li>resolve(value) – si el trabajo finalizó con éxito, con el resultado value.</li><li>reject(error) – si ocurrió un error, error es el objeto error.</li></ul><div><br>Para resumir: el ejecutor corre automáticamente e intenta realizar una tarea. Cuando termina con el intento, llama a resolve si fue exitoso o reject si hubo un error.<br><br></div><div>El objeto promise devuelto por el constructor new Promise tiene estas propiedades internas:<br><br></div><ul><li>state – inicialmente "pendiente"; luego cambia a "cumplido" cuando se llama a resolve, o a "rechazado" cuando se llama a reject.</li><li>result – inicialmente undefined; luego cambia a valor cuando se llama a resolve(valor), o a error cuando se llama a reject(error).</li></ul><div><br>Entonces el ejecutor, en algún momento, pasa la promise a uno de estos estados:<br><br></div><div>Después veremos cómo los “fanáticos” pueden suscribirse a estos cambios.<br><br></div><div>Aquí hay un ejemplo de un constructor de promesas y una función ejecutora simple con “código productor” que toma tiempo (a través de setTimeout):<br><br></div><div>let promise = new Promise(function(resolve, reject) {</div><div>&nbsp; // la función se ejecuta automáticamente cuando se construye la promesa</div><div>&nbsp;</div><div>&nbsp; // después de 1 segundo, indica que la tarea está hecha con el resultado "hecho"</div><div>&nbsp; setTimeout(() =&gt; resolve("hecho"), 1000);</div><div>});<br><br></div><div>Podemos ver dos cosas al ejecutar el código anterior:<br><br></div><ol><li>Se llama al ejecutor de forma automática e inmediata (por new Promise).</li><li>El ejecutor recibe dos argumentos: resolve y reject. Estas funciones están predefinidas por el motor de JavaScript, por lo que no necesitamos crearlas. Solo debemos llamar a uno de ellos cuando esté listo.</li></ol><div>Después de un segundo de “procesamiento”, el ejecutor llama a resolve("hecho") para producir el resultado. Esto cambia el estado del objeto promise:<br><br></div><div><br>Ese fue un ejemplo de finalización exitosa de la tarea, una “promesa cumplida”.<br><br></div><div>Y ahora un ejemplo del ejecutor rechazando la promesa con un error:<br><br></div><div>let promise = new Promise(function(resolve, reject) {</div><div>&nbsp; // después de 1 segundo, indica que la tarea ha finalizado con un error</div><div>&nbsp; setTimeout(() =&gt; reject(new Error("¡Vaya!")), 1000);</div><div>});<br><br></div><div>La llamada a reject(...) mueve el objeto promise al estado "rechazado":<br><br></div><div>Para resumir, el ejecutor debe realizar una tarea (generalmente algo que toma tiempo) y luego llamar a “resolve” o “reject” para cambiar el estado del objeto promise correspondiente.<br><br></div><div>Una promesa que se resuelve o se rechaza se denomina “resuelta”, en oposición a una promesa inicialmente “pendiente”.<br><br></div><div><strong>Solo puede haber un único resultado, o un error</strong></div><div>El ejecutor debe llamar solo a un ‘resolve’ o un ‘reject’. Cualquier cambio de estado es definitivo.<br><br></div><div>Se ignoran todas las llamadas adicionales de ‘resolve’ y ‘reject’:<br><br></div><div>let promise = new Promise(function(resolve, reject) {</div><div>&nbsp; resolve("hecho");</div><div>&nbsp;</div><div>&nbsp; reject(new Error("…")); // ignorado</div><div>&nbsp; setTimeout(() =&gt; resolve("…")); // ignorado</div><div>});<br><br></div><div>La idea es que una tarea realizada por el ejecutor puede tener solo un resultado o un error.<br><br></div><div>Además, resolve/reject espera solo un argumento (o ninguno) e ignorará argumentos adicionales.<br><br></div><div><strong>Rechazar con objetos Error</strong></div><div>En caso de que algo salga mal, el ejecutor debe llamar a ‘reject’. Eso se puede hacer con cualquier tipo de argumento (al igual que resolve). Pero se recomienda usar objetos Error (u objetos que hereden de Error). El razonamiento para eso pronto se hará evidente.<br><br></div><div><strong>Inmediatamente llamando a resolve/reject</strong></div><div>En la práctica, un ejecutor generalmente hace algo de forma asíncrona y llama a resolve/reject después de un tiempo, pero no está obligado a hacerlo así. También podemos llamar a resolve o reject inmediatamente:<br><br></div><div>let promise = new Promise(function(resolve, reject) {</div><div>&nbsp; // sin que nos quite tiempo para hacer la tarea</div><div>&nbsp; resolve(123); // dar inmediatamente el resultado: 123</div><div>});<br><br></div><div>Por ejemplo, esto puede suceder cuando comenzamos una tarea, pero luego vemos que todo ya se ha completado y almacenado en caché.<br><br></div><div>Está bien. Inmediatamente tenemos una promesa resuelta.<br><br></div><div><strong>state y result son internos</strong></div><div>Las propiedades state y result del objeto Promise son internas. No podemos acceder directamente a ellas. Podemos usar los métodos .then/.catch/.finally para eso.&nbsp;<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 20:00:38 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423358980</guid>
      </item>
      <item>
         <title>Async/await</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423381493</link>
         <description><![CDATA[<div>la palabra clave async , que se pone delante de una declaración de función para convertirla en una función async.</div><div>Una función asíncrona es una función que sabe que es posible que se use la palabra clave&nbsp; await dentro de ella para invocar código asíncrono.</div><div><em>La palabra clave async se añade a las funciones para que devuelvan una promesa en lugar de un valor directamente.</em></div><pre>const cargarDatos = async () =&gt; {  const url = "https://jsonplaceholder.typicode.com/todos/1";  const res = await fetch(url);  const datos = await res.json();  console.log(datos);};cargarDatos();// output en la consola{  completed: false,  id: 1,  title: "delectus aut autem",  userId: 1}</pre><div>Cómo una función Async devuelve una promesa</div><div>Este es uno de los rasgos de las funciones asíncronas — se garantiza que sus valores de retorno se convertirán en promesas. Para manejar los datos devueltos por una función async podemos usar una palabra clave then para obtener los datos.</div><pre>const cargarDatos = async () =&gt; {  try{    const url = "https://jsonplaceholder.typicode.com/todos/1";    const res = await fetch(url);    const datos = await res.json();    return datos  } catch(err) {    console.log(err)  }}; const datos = cargarDatos().then(datos =&gt; console.log(datos));</pre>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 20:44:24 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423381493</guid>
      </item>
      <item>
         <title>Mudulos</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423383975</link>
         <description><![CDATA[<div>, lo que se suele hacer en programación es separar nuestro archivo en distintas unidades. Esto se usa mucho en HTML y CSS, pero también es común en JavaScript. Aquí, <strong>los módulos son una herramienta que nos permite separar el archivo </strong><strong><em>index.js </em></strong><strong>en distintas unidades lógicas o archivos.</strong> Esta práctica facilita la lectura y edición al describir claramente el propósito de cada sección de nuestro proyecto.<br><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 20:50:04 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423383975</guid>
      </item>
      <item>
         <title>Propiedades de los modulos</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423385160</link>
         <description><![CDATA[<div><strong><em>Name export</em></strong></div><div><strong>utilizaremos la palabra clave </strong><strong><em>import </em></strong><strong>y su nombre de objeto, por lo que deberemos insertar las llaves.</strong> A continuación, te ponemos un ejemplo:</div><div><br>export const name = ‘value’<br><br></div><div><br>import { name } from ‘…’<br><br></div><div><br>Con este método, <strong>puedes importar más de una variable usando su nombre dentro de las llaves y separándolas por comas.<br></strong><br></div><div><em>Default Export</em></div><div><br>Otra manera de exportar una variable es usando la palabra clave <em>default. </em>Esta nos permite hacer que, con cualquier nombre, se importe la variable que hemos exportado. A diferencia del <em>name export, </em><strong>solo podemos tener una variable </strong><strong><em>default </em></strong><strong>en un archivo.</strong> Puedes ver cómo funciona esto a continuación:<br><br></div><div><br>const saludo = ‘hola’<br><br></div><div><br>export default saludo<br><br></div><div><br>import bienvenida from ‘…’<br><br></div><div><br>Entonces, lo que sucede es que<strong> le podemos dar cualquier nombre a la variable en nuestro nuevo archivo. </strong>Además, no necesitaremos usar las llaves para definir esta variable, pues no tiene un nombre específico.<br><br></div><div><strong><em>Rename Export</em></strong></div><div><br>Este método <strong>nos permite renombrar una variable en la exportación para que se use el nuevo nombre en la importación.</strong> Esto es muy útil cuando sabemos que habrá otra variable con el mismo nombre en el nuevo archivo.<br><br></div><div><br>export {name as newName }<br><br></div><div><br>import { newName } from ‘…’<br><br></div><div><strong><em>Rename Import</em></strong></div><div><br>Además de poder cambiar el nombre en la exportación, podemos hacerlo en la importación de elementos. A continuación, te mostramos un ejemplo de una exportación:<br><br></div><div><br>export {<br><br></div><div><br>name 1,<br><br></div><div><br>name2 as newName2<br><br></div><div><br>}<br><br></div><div><br>Ahora, <strong>podemos no solo usar el nombre dado en la exportación para las variables, sino también cambiarla en la importación.<br></strong><br></div><div><br>import {<br><br></div><div><br>name1 as newName1,<br><br></div><div><br>newName2<br><br></div><div><br>} from ‘…’<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 20:53:14 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423385160</guid>
      </item>
      <item>
         <title>Definición</title>
         <author>valentinapuentes725</author>
         <link>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423394986</link>
         <description><![CDATA[<div><strong>Los Hooks son una nueva API de la librería de React que nos permite tener estado, y otras características de React, en los componentes creados con una function.<br></strong><br></div><div><strong><em>Hooks</em></strong><strong> es gancho y, precisamente, lo que hacen, es que te permiten </strong><strong><em>enganchar</em></strong><strong> tus componentes funcionales a todas las características que ofrece React.</strong><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2022-12-16 21:17:11 UTC</pubDate>
         <guid>https://padlet.com/jefersoncamero/sin4laf4euzr9kdl/wish/2423394986</guid>
      </item>
   </channel>
</rss>
