<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Fernando Cañas - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Fernando Cañas - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 08:28:24 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/wfercanas/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Tutorial de React: Cómo trabajar con múltiples checkboxes ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Yogesh Chavan [https://www.freecodecamp.org/news/author/yogesh/] Artículo original React Tutorial – How to Work with Multiple Checkboxes [https://www.freecodecamp.org/news/how-to-work-with-multiple-checkboxes-in-react/]    Traducido y adaptado por Fernando Cañas [/espanol/news/author/wfercanas/] Manipular múltiples checkbox (casillas de verificación) en React es completamente diferente a su uso regular en HTML. En este artículo veremos ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/tutorial-de-react-como-trabajar-con-multiples-checkboxes/</link>
                <guid isPermaLink="false">620c6274ac7bdf0914b1ee9a</guid>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Fernando Cañas ]]>
                </dc:creator>
                <pubDate>Sat, 19 Feb 2022 03:40:29 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/02/checkbox_selection.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong> </strong><a href="https://www.freecodecamp.org/news/author/yogesh/">Yogesh Chavan</a><br><strong><strong><strong><strong>Artículo original</strong></strong></strong> </strong><a href="https://www.freecodecamp.org/news/how-to-work-with-multiple-checkboxes-in-react/">React Tutorial – How to Work with Multiple Checkboxes</a><strong><strong><strong><strong> </strong></strong></strong></strong><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/wfercanas/">Fernando Cañas</a></p><p>Manipular múltiples checkbox (casillas de verificación) en React es completamente diferente a su uso regular en HTML.</p><p>En este artículo veremos cómo trabajar con múltiples checkbox en React.</p><p>Aprenderás:</p><ul><li>Cómo usar un checkbox como un input controlado en React.</li><li>Cómo usar los métodos map y reduce de los arreglos (arrays) para ejecutar cálculos complejos.</li><li>Cómo crear un arreglo pre-llenado de longitud específica con algunos valores específicos.</li></ul><p>Y mucho más.</p><p>Este artículo es una parte de mi curso "<a href="https://master-redux.yogeshchavan.dev/">Mastering Redux</a>". Aquí puedes acceder a una <a href="https://www.youtube.com/watch?v=izSw74H08Bc">previsualización de la aplicación</a> que estaremos construyendo en el curso.</p><p>Empecemos.</p><h2 id="c-mo-trabajar-con-un-nico-checkbox">Cómo trabajar con un único checkbox</h2><p>Empecemos con la funcionalidad de un único checkbox antes de avanzar a múltiples checkboxes.</p><p>En este artículo usaremos la sintaxis de React Hooks para crear componentes. </p><p>Miremos el siguiente código:</p><pre><code class="language-js">&lt;div className="App"&gt;
  Select your pizza topping:
  &lt;div className="topping"&gt;
    &lt;input type="checkbox" id="topping" name="topping" value="Paneer" /&gt;Paneer
  &lt;/div&gt;
&lt;/div&gt;
</code></pre><p>Aquí un demo en <a href="https://codesandbox.io/s/young-snow-lzplh?file=/src/App.js">Sandbox</a>.</p><p>En el código anterior, declaramos solamente un único checkbox de una forma muy similar a como lo haríamos en HTML.</p><p>De esta manera es muy fácil marcar y desmarcar el checkbox, tal como se muestra a continuación:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/05/check_uncheck-1.gif" class="kg-image" alt="check_uncheck-1" width="600" height="400" loading="lazy"></figure><p>Pero para mostrar en pantalla si la casilla se encuentra marcada o no, necesitamos convertir el checkbox en un input controlado.</p><p>En React, un input controlado es manejado por el estado, de tal manera que el valor del input solamente pueda ser cambiado si se modifica el estado relacionado con ese input.</p><p>Mira el siguiente caso:</p><pre><code class="language-js">export default function App() {
  const [isChecked, setIsChecked] = useState(false);

  const handleOnChange = () =&gt; {
    setIsChecked(!isChecked);
  };

  return (
    &lt;div className="App"&gt;
      Select your pizza topping:
      &lt;div className="topping"&gt;
        &lt;input
          type="checkbox"
          id="topping"
          name="topping"
          value="Paneer"
          checked={isChecked}
          onChange={handleOnChange}
        /&gt;
        Paneer
      &lt;/div&gt;
      &lt;div className="result"&gt;
        Above checkbox is {isChecked ? "checked" : "un-checked"}.
      &lt;/div&gt;
    &lt;/div&gt;
  );
}
</code></pre><p>Aquí puedes ver el código en <a href="https://codesandbox.io/s/dazzling-oskar-qcil8?file=/src/App.js">Sandbox</a>.</p><p>En el código de arriba, hemos declarado el estado <code>isChecked</code> en el componente con un valor inicial en <code>false</code> haciendo uso del hook <code>useState</code>.</p><pre><code class="language-js">const [isChecked, setIsChecked] = useState(false);
</code></pre><p>Luego, al input de tipo checkbox le hemos dado dos props adicionales, <code>checked</code> y <code>onChange</code>:</p><pre><code class="language-js">&lt;input
  ...
  checked={isChecked}
  onChange={handleOnChange}
/&gt;
</code></pre><p>Cada vez que hacemos clic en el checkbox, la función <code>handleOnChange</code> será ejecutada. Esto hará que modifiquemos el valor del estado <code>isChecked</code>:</p><pre><code class="language-js">const handleOnChange = () =&gt; {
  setIsChecked(!isChecked);
};
</code></pre><p>Si el checkbox se encuentra marcado, cambiaremos el valor de <code>isChecked</code> a <code>false</code>. Pero si el checkbox se encuentra desmarcado, definiremos el estado como <code>true</code> usando <code>!isChecked</code>. Luego pasamos este valor en el input a través de la prop <code>checked</code>.</p><p>De esta manera el input de tipo checkbox se convierte en un input controlado cuyo valor es gestionado por el estado.</p><p>En React siempre se recomienda usar inputs controlados aun si el código se ve visualmente complicado. Esto garantiza que los cambios en los inputs solamente ocurran al interior de la función ligada al evento <code>onChange</code>.</p><p>El estado del input no se verá afectado de ninguna otra manera y así siempre obtendrás el valor correcto y actualizado en el input.</p><p>Solo en casos raros puedes usar React ref para usar el input de forma no controlada.</p><h2 id="c-mo-manejar-m-ltiples-checkbox">Cómo manejar múltiples checkbox</h2><p>Ahora démosle una mirada a cómo manipular múltiples checkbox.</p><p>Mira el siguiente código en <a href="https://codesandbox.io/s/mystifying-tu-xlpgb?file=/src/App.js">Sandbox</a>:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/05/multiple_checkboxes-2.png" class="kg-image" alt="multiple_checkboxes-2" width="600" height="400" loading="lazy"></figure><p>Aquí, estamos mostrando una lista de ingredientes y su precio correspondiente. Basados en los ingredientes que sean seleccionados, necesitamos mostrar el valor total.</p><p>Previamente, con un único checkbox, solamente teníamos el estado <code>isChecked</code> y con ello podíamos cambiar el estado.</p><p>Sin embargo, ahora tenemos muchos checkbox, así que no es práctico agregar múltiples <code>useState</code> para cada uno de ellos.</p><p>Entonces, declaremos un arreglo dentro del estado indicando la marcación de cada uno de los checkbox.</p><p>Para crear un arreglo de longitud igual al número de checkbox, podemos usar el método <code>fill</code> de los arreglos así:</p><pre><code class="language-js">const [checkedState, setCheckedState] = useState(
    new Array(toppings.length).fill(false)
);
</code></pre><p>Aquí hemos declarado un estado con un valor inicial igual a un arreglo cuyos valores son <code>false</code>.</p><p>Así que si tenemos 5 ingredientes, entonces el estado <code>checkedState</code> será un arreglo con 5 valores en <code>false</code>.</p><pre><code class="language-js">[false, false, false, false, false]
</code></pre><p>Ahora, una vez que marquemos (y desmarquemos) el checkbox, cambiaremos el valor <code>false</code> correspondiente por <code>true</code> (y viceversa).</p><p>Aquí está el <a href="https://codesandbox.io/s/wild-silence-b8k2j?file=/src/App.js">Sandbox</a> final. El código <code>App.js</code> completo de se ve así:</p><pre><code class="language-js">import { useState } from "react";
import { toppings } from "./utils/toppings";
import "./styles.css";

const getFormattedPrice = (price) =&gt; `$${price.toFixed(2)}`;

export default function App() {
  const [checkedState, setCheckedState] = useState(
    new Array(toppings.length).fill(false)
  );

  const [total, setTotal] = useState(0);

  const handleOnChange = (position) =&gt; {
    const updatedCheckedState = checkedState.map((item, index) =&gt;
      index === position ? !item : item
    );

    setCheckedState(updatedCheckedState);

    const totalPrice = updatedCheckedState.reduce(
      (sum, currentState, index) =&gt; {
        if (currentState === true) {
          return sum + toppings[index].price;
        }
        return sum;
      },
      0
    );

    setTotal(totalPrice);
  };

  return (
    &lt;div className="App"&gt;
      &lt;h3&gt;Select Toppings&lt;/h3&gt;
      &lt;ul className="toppings-list"&gt;
        {toppings.map(({ name, price }, index) =&gt; {
          return (
            &lt;li key={index}&gt;
              &lt;div className="toppings-list-item"&gt;
                &lt;div className="left-section"&gt;
                  &lt;input
                    type="checkbox"
                    id={`custom-checkbox-${index}`}
                    name={name}
                    value={name}
                    checked={checkedState[index]}
                    onChange={() =&gt; handleOnChange(index)}
                  /&gt;
                  &lt;label htmlFor={`custom-checkbox-${index}`}&gt;{name}&lt;/label&gt;
                &lt;/div&gt;
                &lt;div className="right-section"&gt;{getFormattedPrice(price)}&lt;/div&gt;
              &lt;/div&gt;
            &lt;/li&gt;
          );
        })}
        &lt;li&gt;
          &lt;div className="toppings-list-item"&gt;
            &lt;div className="left-section"&gt;Total:&lt;/div&gt;
            &lt;div className="right-section"&gt;{getFormattedPrice(total)}&lt;/div&gt;
          &lt;/div&gt;
        &lt;/li&gt;
      &lt;/ul&gt;
    &lt;/div&gt;
  );
}
</code></pre><p>Entendamos lo que estamos haciendo aquí.</p><p>Hemos declarado el input tipo checkbox de la siguiente forma:</p><pre><code class="language-js">&lt;input
  type="checkbox"
  id={`custom-checkbox-${index}`}
  name={name}
  value={name}
  checked={checkedState[index]}
  onChange={() =&gt; handleOnChange(index)}
/&gt;
</code></pre><p>Aquí, hemos agregado el atributo <code>checked</code> con el correspondiente valor de <code>true</code> o <code>false</code> según lo indique el estado en <code>checkedState</code>. &nbsp;Así cada checkbox tendrá el valor correcto para su estado de marcado.</p><p>También hemos agregado una función que maneja el evento <code>onChange</code> y hemos pasado el <code>index</code> del checkbox, de tal manera que este sea marcado o desmarcado por el método <code>handleOnChange</code>.</p><p>El método <code>handleOnChange</code> se ve de la siguiente manera:</p><pre><code class="language-js">const handleOnChange = (position) =&gt; {
  const updatedCheckedState = checkedState.map((item, index) =&gt;
    index === position ? !item : item
  );

  setCheckedState(updatedCheckedState);

  const totalPrice = updatedCheckedState.reduce(
    (sum, currentState, index) =&gt; {
      if (currentState === true) {
        return sum + toppings[index].price;
      }
      return sum;
    },
    0
  );

  setTotal(totalPrice);
};
</code></pre><p>Aquí, estamos primero recorriendo el arreglo <code>checkedState</code> usando el método <code>map</code> de los arreglos. Si el valor del parámetro <code>position</code> que ha sido pasado a la función es igual al <code>index</code> de turno, entonces modificamos su valor. Así, si el valor es <code>true</code> entonces será convertido a <code>false</code> usando <code>!item</code> y viceversa.</p><p>Si el <code>index</code> no es igual al proveído por el parámetro <code>position</code>, entonces no estamos invirtiendo su valor y devolveremos su valor tal cual se encuentre:</p><pre><code class="language-js">const updatedCheckedState = checkedState.map((item, index) =&gt;
  index === position ? !item : item
);

// the above code is the same as the below code

const updatedCheckedState = checkedState.map((item, index) =&gt; {
  if (index === position) {
    return !item;
  } else {
    return item;
  }
});
</code></pre><p>Usé el operador ternario <code>?:</code> porque permite que el código sea más corto, pero tú puedes usar el método de los arreglos que prefieras.</p><p>Si no estás familiarizado con cómo funcionan los métodos como <code>map</code> o <code>reduce</code>, entonces revisa este otro <a href="https://www.freecodecamp.org/espanol/news/map-reduce-y-filter-de-javascript-funciones-de-arreglo-js-explicadas-con-ejemplos-de-codigo/">artículo</a> que escribí.</p><p>A continuación, definiremos el arreglo <code>checkedState</code> según lo registrado en el arreglo <code>updatedCheckedState</code>. Esto es importante porque si no actualizas el estado <code>checkedState</code> dentro de la función <code>handleOnChange</code>, entonces no podrás marcar o desmarcar los checkbox.</p><p>Esto es así porque estamos usando el valor de <code>checkedState</code> para que los checkbox puedan determinar si están marcados o desmarcados (como un input controlado, tal cual como se muestra a continuación):</p><pre><code class="language-js">&lt;input
  type="checkbox"
  ...
  checked={checkedState[index]}
  onChange={() =&gt; handleOnChange(index)}
/&gt;
</code></pre><p>Mira que hemos creado una variable separada <code>updatedCheckedState</code> y que estamos pasando esta variable a la función <code>setCheckedState</code>. También estamos usando el método <code>reduce</code> sobre <code>updatedCheckedState</code> y no sobre el arreglo <code>checkedState</code> con el estado original.</p><p>Esto es porque, por defecto, la función <code>setCheckedState</code> suele actualizar el estado de forma asíncrona.</p><p>Sólo porque hallas llamado a la función <code>setCheckedState</code> no se garantiza que vas a obtener el valor actualizado de <code>checkedState</code> en la siguiente línea.</p><p>Así que hemos creado una variable separada y la hemos usado para ejecutar el método <code>reduce</code>.</p><p>Luego, para calcular el precio total, estamos utilizando el arreglo <code>reduce</code>:</p><pre><code class="language-js">const totalPrice = updatedCheckedState.reduce(
  (sum, currentState, index) =&gt; {
    if (currentState === true) {
      return sum + toppings[index].price;
    }
    return sum;
  },
  0
);
</code></pre><p>El método <code>reduce</code> recibe cuatro parámetros, de los cuales solamente estamos usando tres: <code>sum</code>, <code>currentState</code> e <code>index</code>. Puedes usar nombres diferentes si quieres, ya que son simplemente parámetros.</p><p>También estamos pasando <code>0</code> como valor inicial, lo que también es conocido como el valor <code>accumulator</code> para el parámetro de suma <code>sum</code>.</p><p>Luego, dentro de la función <code>reduce</code>, estamos revisando si el valor actual del arreglo <code>checkedState</code> es <code>true</code> o no.</p><p>Si es <code>true</code>, significa que el checkbox está marcado, así que agregaremos el valor del <code>price</code> correspondiente usando la operación <code>sum + toppings[index].price</code>.</p><p>Si el valor en el arreglo <code>checkedState</code> es <code>false</code>, entonces no agregaremos su precio y devolveremos el valor previamente calculado de <code>sum</code>.</p><p>Así podemos asignar el valor de <code>totalPrice</code> al estado <code>total</code> usando <code>setTotal(totalPrice)</code>.</p><p>De esta manera estamos calculando correctamente el valor total de los ingredientes seleccionados como ves a continuación:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2021/05/toppings-1.gif" class="kg-image" alt="toppings-1" width="600" height="400" loading="lazy"></figure><p>Aquí hay un <a href="https://b8k2j.csb.app/">link</a> para previsualizar el demo en Sandbox.</p><h3 id="-gracias-por-leer-">¡Gracias por leer!</h3><p>Muchos desarrolladores pasan dificultades entendiendo cómo trabaja Redux. Pero todo desarrollador que use React debería tener claro cómo trabajar con Redux, ya que los proyectos en la industria usan principalmente Redux para administrar proyectos grandes.</p><p>Así que para hacértelo más fácil, he lanzando el curso <a href="https://master-redux.yogeshchavan.dev/">Mastering Redux</a>.</p><p>En este curso aprenderás Redux desde un nivel absolutamente principiante y construirás una <a href="https://www.youtube.com/watch?v=izSw74H08Bc">food ordering app</a> desde cero usando Redux.</p><p>Dale clic a la imagen de abajo para unirte al curso, obtener un descuento con tiempo limitado y mi libro popular Mastering Modern JavaScript gratis.</p><figure class="kg-card kg-image-card"><img src="https://gist.github.com/myogeshchavan97/98ae4f4ead57fde8d47fcf7641220b72/raw/c3e4265df4396d639a7938a83bffd570130483b1/banner.jpg" class="kg-image" alt="banner" width="600" height="400" loading="lazy"></figure><p><strong>¿Quieres estar actualizado con contenido regular sobre JavaScript, React y Node.js? <a href="https://www.linkedin.com/in/yogesh-chavan97/">Sígueme en LinkedIn</a>.</strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo usar el método .includes() en JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Jessica Wilkins [https://www.freecodecamp.org/news/author/jessica-wilkins/] Artículo original JavaScript String Contains – How to use JS .includes() [https://www.freecodecamp.org/news/javascript-string-contains-how-to-use-js-includes/]    Traducido y adaptado por Fernando Cañas [/espanol/news/author/wfercanas] En JavaScript puedes usar el método .includes() para ver si una cadena (string) existe dentro de otra. Pero, ¿cómo funciona realmente? ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-usar-metodo-includes-en-javascript/</link>
                <guid isPermaLink="false">61ea1da6611941092f94c887</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Fernando Cañas ]]>
                </dc:creator>
                <pubDate>Mon, 24 Jan 2022 01:56:42 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/01/amie-bell-XGqS569rdgk-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong> </strong><a href="https://www.freecodecamp.org/news/author/jessica-wilkins/">Jessica Wilkins</a><br><strong><strong><strong><strong>Artículo original</strong></strong></strong> </strong><a href="https://www.freecodecamp.org/news/javascript-string-contains-how-to-use-js-includes/">JavaScript String Contains – How to use JS .includes()</a><strong><strong><strong><strong> </strong></strong></strong></strong><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/wfercanas">Fernando Cañas</a></p><p>En JavaScript puedes usar el método <code>.includes()</code> para ver si una cadena (string) existe dentro de otra. Pero, ¿cómo funciona realmente?</p><p>En este artículo te presentaré algunos ejemplos en código sobre el método de cadenas en JavaScript llamado <code>.includes()</code>.</p><h2 id="sintaxis-b-sica-de-includes-">Sintaxis básica de <code>.includes()</code></h2><p>La siguiente es la sintaxis básica del método <code>includes()</code>:</p><pre><code class="language-js">str.includes(search-string, optional-position)</code></pre><p>El parámetro <code>search-string</code> es la cadena que estás buscando dentro de una cadena a la que hace referencia la variable <code>str</code>.</p><p>El parámetro <code>position</code> es un número opcional para indicar a partir de cuál posición de <code>str</code> queremos buscar nuestra cadena. Si se omite este parámetro se asume un valor por defecto de cero.</p><p>Si el valor de <code>search-string</code> es encontrado, obtendremos un valor <code>true</code> como retorno de la función. En caso contrario obtendremos un valor <code>false</code>.</p><h2 id="c-digo-de-ejemplo-para-el-m-todo-includes-">Código de ejemplo para el método <code>.includes()</code></h2><p>En este primer ejemplo tenemos una oración: "I love freeCodeCamp". Queremos saber si la palabra "love" está incluida en esa oración.</p><p>En el código, <code>str</code> sería igual a la cadena "I love freeCodeCamp" y la palabra a buscar, contenida en <code>search-string</code>, sería "love".</p><pre><code class="language-js">"I love freeCodeCamp".includes("love")</code></pre><p>Dado que la palabra "love" sí está incluida dentro de la cadena <code>str</code>, entonces el código retorna el valor <code>true</code>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-04-at-9.35.42-PM.png" class="kg-image" alt="Screen-Shot-2021-11-04-at-9.35.42-PM" width="600" height="400" loading="lazy"></figure><h3 id="-es-el-m-todo-includes-sensible-a-las-may-sculas-y-min-sculas">¿Es el método <code>.includes()</code> sensible a las mayúsculas y minúsculas?</h3><p>Si modificamos la cadena <code>str</code> al valor "I LOVE freeCodeCamp" y el término a buscar, <code>search-string</code>, sigue siendo "love", entonces el valor que retorna la función es <code>false</code>.</p><pre><code class="language-js">"I LOVE freeCodeCamp".includes('love')</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-04-at-9.40.56-PM.png" class="kg-image" alt="Screen-Shot-2021-11-04-at-9.40.56-PM" width="600" height="400" loading="lazy"></figure><p>Es <code>false</code> porque el método <code>.includes()</code> es sensible a las mayúsculas y minúsculas. "LOVE" no es lo mismo que "love".</p><h3 id="c-mo-usar-el-par-metro-opcional-de-posici-n">Cómo usar el parámetro opcional de posición</h3><p>Vamos a modificar nuestro ejemplo para usar el parámetro de posición. Ahora queremos validar si "love" se encuentra dentro de la cadena "I love freeCodeCamp" cuando la búsqueda empieza en la posición 1.</p><p>Recuerda que las cadenas tienen una indexación basada en el número cero, lo que significa que la primera letra, "I", tiene un índice de cero.</p><p>Nuestro código retornará <code>true</code> debido a que cuando empieza a buscar a partir de la posición 1, la palabra "love" no aparece sino hasta la posición 2, así que está completamente contenida dentro del rango de la cadena en el que estamos buscando.</p><p>La cadena, contando a partir de la posición 1 y yendo hasta el final, incluye estos caracteres y espacios:</p><pre><code>" love freeCodeCamp"</code></pre><p>Recuerda que los espacios en las cadenas reciben su propio índice.</p><p>Así luciría nuestro código si usamos el parámetro de posición:</p><pre><code class="language-js">"I love freeCodeCamp".includes('love', 1)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-04-at-9.55.34-PM.png" class="kg-image" alt="Screen-Shot-2021-11-04-at-9.55.34-PM" width="600" height="400" loading="lazy"></figure><p>Si cambiamos el parámetro de posición al valor 3, entonces el valor retornado por la función es <code>false</code>.</p><pre><code class="language-js">"I love freeCodecamp".includes('love', 3)</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-04-at-10.06.30-PM.png" class="kg-image" alt="Screen-Shot-2021-11-04-at-10.06.30-PM" width="600" height="400" loading="lazy"></figure><p>La función retorna <code>false</code> porque la posición 3 es la letra "o".</p><p>La cadena, contando a partir de la posición 3 y yendo hasta el final, incluye estos caracteres y espacios:</p><pre><code>"ove freeCodeCamp"</code></pre><p>Puedes ver que la palabra "love" no se encuentra completa dentro de esta cadena.</p><h2 id="conclusi-n">Conclusión</h2><p>En JavaScript puedes usar el método <code>.includes()</code> para ver si una cadena se encuentra dentro de otra.</p><p>Esta es la sintaxis básica del método <code>.includes()</code>:</p><pre><code class="language-js">str.includes(search-string, optional-position)</code></pre><p>Si el término de búsqueda (<code>search-string</code>) es encontrado, la función retorna el valor <code>true</code>. En caso contrario retorna el valor <code>false</code>.</p><p>El método <code>.includes()</code> es sensible a mayúsculas y minúsculas, lo que significa que si el término de búsqueda (<code>search-string</code>) no coincide exactamente en este sentido con parte del contenido de la cadena en la que estamos buscando (<code>str</code>), el resultado será un valor <code>false</code> como retorno del método.</p><p>El parámetro de posición (<code>position</code>) es un número opcional que corresponde al índice a partir de cuál empezar a buscar en <code>str</code>. Si se omite este parámetro entonces el valor por defecto es cero.</p><p><strong>Espero que hayas disfrutado este artículo sobre el método </strong><code>.includes()</code>. Te deseo la mejor de las suertes en tu aprendizaje de JavaScript.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo usar react-icons para instalar Font Awesome en una aplicación con React ]]>
                </title>
                <description>
                    <![CDATA[ Artículo original escrito por Miracle Ugorji [https://www.freecodecamp.org/news/author/miracle/] Artículo original How to use react-icons to install Font Awesome in a React app [https://www.freecodecamp.org/news/how-to-use-react-icons/] Traducido y adaptado por Fernando Cañas [/espanol/news/author/wfercanas] Cuando estés construyendo una aplicación web con React, es muy probable que requieras utilizar íconos. Los íconos son representaciones gráficas de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-usar-react-icons/</link>
                <guid isPermaLink="false">61e07a3917a453092f695024</guid>
                
                    <category>
                        <![CDATA[ React ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Fernando Cañas ]]>
                </dc:creator>
                <pubDate>Fri, 14 Jan 2022 20:49:44 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/01/react---fontawesome-icon-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><strong><strong><strong><strong>Artículo original escrito por</strong></strong></strong> </strong><a href="https://www.freecodecamp.org/news/author/miracle/">Miracle Ugorji</a><br><strong><strong><strong><strong>Artículo original </strong></strong></strong></strong><a href="https://www.freecodecamp.org/news/how-to-use-react-icons/">How to use react-icons to install Font Awesome in a React app</a><br><strong><strong><strong><strong>Traducido y adaptado por </strong></strong></strong></strong><a href="https://www.freecodecamp.org/espanol/news/author/wfercanas">Fernando Cañas</a></p><p>Cuando estés construyendo una aplicación web con React, es muy probable que requieras utilizar íconos. Los íconos son representaciones gráficas de un concepto, una idea, un archivo, un programa, una aplicación, un negocio, entre otros.</p><p>También puedes usar íconos para representar la identidad de una funcionalidad. En aquellos lugares donde no quieras escribir el nombre de un programa, un ícono adecuado puede aparecer en lugar del nombre o aplicación para una fácil identificación.</p><p>Existen muchas y diferentes librerías de íconos allí afuera, así que, ¿cómo puedes agregarlas a tu aplicación en React? Aprenderemos esto y mucho más en este artículo.</p><h2 id="en-este-art-culo-aprender-s-">En este artículo aprenderás:</h2><ul><li>¿Qué es la librería 'react-icons'?</li><li>¿Qué son los íconos de Font Awesome?</li><li>Cómo configurar tu entorno de desarrollo.</li><li>Cómo instalar 'react-icons'.</li><li>Cómo importar 'react-icons'.</li><li>Cómo usar 'react-icons' en tus aplicaciones.</li><li>Cómo usar más de un ícono.</li><li>Cómo hacer render de múltiples íconos de diferentes librerías.</li><li>Cómo ubicar íconos con estilo en línea (inline).</li><li>Cómo modificar los estilos de íconos de Font Awesome en una aplicación de React.</li><li>Bono: código para importar todas la librerías de íconos de 'react-icons'</li><li>Conclusión</li></ul><h2 id="-qu-es-react-icons-">¿Qué es 'react-icons'?</h2><p>'React-icons' es una pequeña librería que te permite añadir íconos (desde distintas librerías de íconos) a tus aplicaciones hechas con React. Te entrega los íconos en tu aplicación como componentes, de tal manera que se hace más fácil trabajar con ellos. También te permite modificar sus estilos, así lograrás que sean consistentes con el estilo general de tu aplicación.</p><p>La librería de 'react-icons' usa ES6 para importar los íconos en tu aplicación de React. Lo hace de tal manera que solamente los íconos que realmente vas a utilizar sean lo que se importen de cada librería.</p><p>Con 'react-icons', tú sólo necesitas ejecutar un comando para poder utilizar cualquier ícono que quieras de cierta librería. Solamente necesitas escoger el código <strong>import</strong> correcto y tu ícono estará listo.</p><p>'React-icons' funciona con un conjunto amplio de librerías de íconos como Font Awesome, Material UI, Bootstrap, entre otros.</p><h2 id="-qu-son-los-conos-de-font-awesome">¿Qué son los íconos de Font Awesome?</h2><p>Existen muchas librerías de íconos, pero una de las más populares es Font Awesome. Font Awesome es una librería o kit de herramientas (toolkit) gráficas que son creadas para comportarse como fuentes.</p><p>Los íconos de Font Awesome somo como fuentes de texto normales, pero en lugar de letras obtienes gráficos. Son vectores gráficos escalables (SVGs por sus siglas en inglés), lo cual significa que puedes cambiar sus colores, sus dimensiones y demás sin comprometer su calidad.</p><p>Ahora, para usar los íconos de Font Awesome en una aplicación de React sin 'react-icons', tienes que pasar por un proceso largo de instalación de diferentes paquetes usando varias líneas de comando.</p><p>Algunas veces puede que incluso necesites instalar el paquete Pro. En ese caso, tienes que importar todos los íconos de forma universal o en archivos individuales. ¿Todo este proceso solamente para instalar unos cuántos íconos en tu página web?</p><p>Aquí es donde 'react-icons' aparece para salvar el día. En este artículo, te mostraré cómo usar 'react-icons' para añadir íconos de Font Awesome a tu aplicación de React. Empecemos.</p><h2 id="c-mo-configurar-tu-entorno-de-desarrollo">Cómo configurar tu entorno de desarrollo</h2><p>Sigue los siguientes pasos para configurar tu entorno de desarrollo:</p><blockquote>Nota: si ya cuentas con tu configuración lista, no hace falta que repitas el proceso. Simplemente, salta a la siguiente sección.</blockquote><ol><li>Dirígete a <a href="https://nodejs.org/es/">Node.js</a> para descargar e instalar Node si aún no lo has hecho.</li><li>Abre la terminal de tu equipo.</li><li>Ingresa este comando: <code>npm i -g create-react-app fonts-app</code>. Este instalará una aplicación de React con todos los paquetes que necesitas para tu proyecto.</li><li>Luego, ingresa <code>cd fonts-app/</code>. <code>fonts-app</code> es el nombre de la carpeta de tu proyecto. Tu puedes elegir el nombre que quieras. <code>cd fonts-app</code> te llevará adentro de la carpeta de tu proyecto.</li><li>Una vez dentro, ingresa <code>npm start</code> para iniciar tu proyecto en un servidor de desarrollo.</li><li>Desde tu editor de código abre la carpeta src de tu proyecto y encuentra el archivo <code>App.js</code>.</li><li>Elimina el elemento de React que se encuentra renderizado allí por defecto y añade tu propio div, h1 o cualquier otro elemento que tú prefieras (es sólo con fines de ejemplificar).</li></ol><p>Ahora ya está todo listo.</p><h2 id="c-mo-instalar-react-icons-">Cómo instalar 'react-icons'</h2><p>Para instalar la librería <code>react-icons</code> , realiza lo siguiente:</p><ul><li>Estando dentro de la carpeta de tu proyecto, abre la terminal de tu editor de código.</li><li>Ejecuta allí el comando <code>npm install react-icons</code> para instalar la librería en la carpeta de tu proyecto.</li></ul><p>Esto puede tomar algún tiempo dependiendo de la velocidad de tu sistema. Una vez completo, ya estás listo para usar los íconos.</p><h2 id="c-mo-importar-conos-con-react-icons-">Cómo importar íconos con 'react-icons'</h2><p>Ve a la página de '<a href="https://react-icons.github.io/react-icons/">react-icons</a>'. Verás varias librerías de íconos que puedes utilizar. Cada librería de íconos tiene un código para importarlas. Para este tutorial, nos enfocaremos en la librería de íconos Font Awesome.</p><p>El código para importar desde Font Awesome es <code>import { IconName } from "react-icons/fa";</code>.</p><h4 id="c-digo-de-ejemplo">Código de ejemplo</h4><pre><code class="language-jsx">import { IconName } from "react-icons/fa";
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/FontAwesomePage.png" class="kg-image" alt="FontAwesomePage" width="600" height="400" loading="lazy"><figcaption>Íconos de Font Awesome en la página de react-icons</figcaption></figure><h2 id="c-mo-usar-conos-en-tus-aplicaciones">Cómo usar íconos en tus aplicaciones</h2><p>Sigue los siguientes pasos para usar los íconos de Font Awesome en tu apliación.</p><ol><li>En <code>App.js</code>, pega el código de importar al principio del archivo o luego del código para importar React.</li><li>Vuelve a la página de 'react-icons' y elige cualquier ícono de Font Awesome.</li><li>Haz clic en el ícono para copiarlo.</li><li>Vuelve a tu código de importar en <code>App.js</code>.</li><li>Pega y reemplaza <code>IconName</code> por el nombre del ícono que copiaste, dentro de las llaves.</li><li>Usa el nombre del ícono como el nombre de un elemento de React.</li></ol><h6 id="c-digo-de-ejemplo-1">Código de ejemplo</h6><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart } from "react-icons/fa";

class Like extends Component {
  render() {
    return &lt;FaHeart /&gt;  
  }
}

export default Like;</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/HeartIcon.png" class="kg-image" alt="HeartIcon" width="600" height="400" loading="lazy"><figcaption>Render de un ícono de corazón de Font Awesome</figcaption></figure><p>Al añadir <code>&lt;FaHeart /&gt;</code> al método <strong>render, </strong>se muestra el ícono en tu página web. Esto es posible porque ya habíamos importado el ícono al principio del archivo.</p><blockquote>Nota: Debes hacer coincidir cualquier ícono que hayas copiado con el código para importar. Es decir, no puedes pegar un ícono de Bootstrap con un código de importar de Font Awesome. Hacerlo así no te dará el resultado correcto.</blockquote><h2 id="c-mo-usar-m-s-de-un-cono">Cómo usar más de un ícono</h2><p>Como ya importaste la librería de íconos que querías, no tendrás que hacer un import por segunda vez. Todo lo que tendrás que hacer es volver a la página de 'react-icons', copiar otro ícono que quieras usar y pegarlo dentro de las llaves.</p><p>Así es como puedes usar tantos íconos como necesites de la librería Font Awesome.</p><h6 id="c-digo-de-ejemplo-2">Código de ejemplo</h6><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart /&gt;
      &lt;FaRegHeart /&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/doubleHeart.png" class="kg-image" alt="doubleHeart" width="600" height="400" loading="lazy"><figcaption>Dos corazones de Font Awesome</figcaption></figure><h2 id="c-mo-hacer-render-de-m-ltiples-conos-de-diferentes-librer-as">Cómo hacer render de múltiples íconos de diferentes librerías</h2><p>Existen sutiles diferencias entre las diferentes librerías de íconos. Algunas veces no serás capaz de encontrar todos los íconos que necesitas en una única librería.</p><p>En ese caso, puedes usar los íconos de más de una librería. Solamente necesitas importar las librerías de íconos que desees. Por ejemplo, puedes importar tanto Bootstrap como Font Awesome. Luego sólo necesitarás renderizar los íconos igual que antes.</p><h6 id="c-digo-de-ejemplo-3">Código de ejemplo</h6><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';
import { BsHeartFill, BsHeart } from "react-icons/bs";

class Icons extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart /&gt;
      &lt;FaRegHeart /&gt;
      &lt;BsHeartFill /&gt;
      &lt;BsHeart /&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Icons</code></pre><p>La habilidad de importar íconos de diferentes librerías te da acceso a un amplio rango de íconos. Siempre puedes encontrar lo que necesitas una vez buscas entre las diferentes librerías de íconos.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/FourHearts.png" class="kg-image" alt="FourHearts" width="600" height="400" loading="lazy"><figcaption>Corazones renderizados desde las librerías Font Awesome y Bootstrap</figcaption></figure><blockquote>Nota: solamente usa los íconos desde múltiples librerías si es absolutamente necesario, o de lo contrario esto podría hacer más lenta tu aplicación.</blockquote><h2 id="c-mo-ubicar-conos-con-estilo-en-l-nea-inline-">Cómo ubicar íconos con estilo en línea (inline)</h2><p>Debes haber notado que los íconos se muestran en bloque (display: block;). Esto es porque hemos ubicado los íconos uno después del otro. Si quieres que se muestren en línea (display: inline;) entonces simplemente ubicalos uno al lado del otro. Mira un ejemplo a continuación:</p><pre><code>import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';
import { BsHeartFill, BsHeart } from "react-icons/bs";

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart /&gt; &lt;FaRegHeart /&gt; &lt;BsHeartFill /&gt; &lt;BsHeart /&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/separatedHearts.png" class="kg-image" alt="separatedHearts" width="600" height="400" loading="lazy"><figcaption>Cuatro corazones en línea (inline)</figcaption></figure><h2 id="c-mo-modificar-los-estilos-de-conos-de-font-awesome-en-una-aplicaci-n-de-react">Cómo modificar los estilos de íconos de Font Awesome en una aplicación de React</h2><p>Generalmente, los íconos vienen en un color suave y un tamaño básico que tal vez no sea el adecuado para tu página. Así que tendrás que modificar sus estilos para ajustarlos a tus preferencias.</p><p>Los íconos de 'react-icons' son muy fáciles de modificar. Puedes usar los siguientes estilos para estilizar un ícono de 'react-icons':</p><ul><li>Estilos en línea (Inline styles)</li><li>Modificar su tamaño con etiquetas HTML para encabezados (HTML heading tags)</li><li>Objetos de estilo (Object styles)</li><li>Hoja de estilos en cascada (CSS stylesheet)</li><li>Contexto del ícono (Icon context)</li></ul><h3 id="c-mo-utilizar-estilos-en-l-nea-para-estilizar-conos-inline-styles-">Cómo utilizar estilos en línea para estilizar íconos (Inline Styles)</h3><p>Puedes estilizar un 'react-icon' usando estilos en línea con CSS. Esto significa que aplicarás los estilos dentro de la etiqueta que abre y cierra el elemento.</p><p>Usa este método solamente cuando tienes uno o dos íconos por estilizar. También puedes usarlo cuando necesites íconos con diferentes estilos. Mira el código de ejemplo a continuación:</p><h6 id="c-digo-de-ejemplo-4">Código de ejemplo</h6><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart style={{color: 'red', fontSize: '50px'}}/&gt;
      &lt;FaRegHeart style={{color: 'green', fontSize: '50px'}}/&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/twoColoredHearts.png" class="kg-image" alt="twoColoredHearts" width="600" height="400" loading="lazy"><figcaption>Corazones de Font Awesome coloreados</figcaption></figure><p>Como ves en el ejemplo anterior, estamos pasando el <strong>color</strong> y el tamaño de fuente (<strong>fontSize</strong>) a la propiedad <strong>style</strong>. El primer ícono es un rojo sólido. El segundo ícono tiene su contorno en verde.</p><p>Ten en cuenta que el tamaño de fuente está escrito en camel case (camelCase). Las propiedades de CSS con dos palabras se escriben en camel case en lugar de usar el <code>-</code> para separarlas cuando las usamos en JS vanilla. Esta es la convención en React.</p><h3 id="c-mo-cambiar-el-tama-o-de-los-conos-con-etiquetas-de-encabezado-de-html">Cómo cambiar el tamaño de los íconos con etiquetas de encabezado de HTML</h3><p>También puedes usar etiquetas de encabezado de HTML para hacer que tus íconos tengan el mismo tamaño que el que le corresponde a la etiqueta que has usado.</p><p>Para hacer esto, agrega el elemento de ícono en medio de las etiquetas de apertura y cierre del encabezado.</p><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;h1&gt;&lt;FaHeart style={{color: 'red'}}/&gt;&lt;/h1&gt;
 	  &lt;h6&gt;&lt;FaRegHeart style={{color: 'green'}}/&gt;&lt;/h6&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/BigAndSmallHearts.png" class="kg-image" alt="BigAndSmallHearts" width="600" height="400" loading="lazy"></figure><p>En el código anterior hemos añadido dos íconos en medio de etiquetas de encabezado de HTML respectivamente.</p><h3 id="c-mo-estilizar-conos-con-objetos-de-estilo-object-styles-">Cómo estilizar íconos con objetos de estilo (Object Styles)</h3><p>Puedes almacenar y usar los estilos que quieras para tus íconos en una variable como propiedades de un objeto. Simplemente, declara un objeto y asigna en él todos los estilos que quieras para los íconos.</p><p>Usa este método cuando tienes varios estilos por aplicar a los íconos. También puedes usar este estilo cuando estás apuntando a un ícono en específico. Revisa el siguiente ejemplo:</p><h6 id="c-digo-de-ejemplo-5">Código de ejemplo</h6><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';

const fontStyles = {color: 'blue', fontSize: '80px'};

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart style={fontStyles}/&gt;
      &lt;FaRegHeart style={fontStyles}/&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/BlueHearts.png" class="kg-image" alt="BlueHearts" width="600" height="400" loading="lazy"></figure><p>En el código de ejemplo anterior, almacenamos los estilos que queríamos en un objeto. Luego pasamos el objeto como valor a la propiedad <strong>style </strong>en el ícono.</p><p>Todos los íconos que reciben el objeto de estilos tendrán el mismo estilizado. Así que en el ejemplo anterior, ambos íconos tendrán el mismo color azul y un tamaño de 80px.</p><h3 id="c-mo-estilizar-conos-con-hojas-de-estilo-en-cascada-css-stylesheets-">Cómo estilizar íconos con hojas de estilo en cascada (CSS stylesheets)</h3><p>También puedes usar una hoja de estilos (CSS Stylesheet) para estilizar tus íconos. Usar una hoja de estilos es la forma más adecuada cuando tienes múltiples estilos e íconos por incorporar a tu aplicación.</p><p>Para usar una hoja de estilos, tienes que importar la hoja de estilos en el archivo donde vas a usar los íconos. Pasa una clase a los elementos de ícono que desees. Estiliza los elementos ícono usando la clase en la hoja de estilos. Revisa el siguiente código de ejemplo:</p><h6 id="c-digo-de-ejemplo-6">Código de ejemplo</h6><pre><code class="language-css">//style.css file
.yellow{
font-size: 80px;
color: yellow
}

.purple{
font-size: 80px;
color: purple
}</code></pre><pre><code class="language-jsx">import React, { Component } from 'react';
import { FaHeart, FaRegHeart } from 'react-icons/fa';
import "./style.css";

class Like extends Component {
  render() {
    return (
    &lt;div&gt;
      &lt;FaHeart className='yellow'/&gt;
       &lt;FaRegHeart className='purple'/&gt;
    &lt;/div&gt;
    ) 
  }
}

export default Like</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/YellowAndPurpleHearts-1.png" class="kg-image" alt="YellowAndPurpleHearts-1" width="600" height="400" loading="lazy"><figcaption>Íconos amarillo y púrpura</figcaption></figure><p>El código de ejemplo muestra una hoja de estilos CSS con estilos sobre dos clases. Importamos esta hoja de estilos en nuestro archivo de React. Pasamos esas clases a los estilos sobre los elementos de React donde los queremos.</p><h3 id="c-mo-estilizar-conos-usando-el-contexto-del-cono">Cómo estilizar íconos usando el contexto del ícono</h3><p>También puedes importar el contexto de íconos de 'react-icons' en lugar de agregar múltiples nombres de clases en diferentes íconos. Así puedes darle al contexto los valores que desees. Agrega los elementos de ícono dentro del contexto como se muestra a continuación:</p><h6 id="c-digo-de-ejemplo-7">Código de ejemplo</h6><pre><code>import React from 'react';
import { IconContext } from "react-icons";

const Like = () =&gt; {
  return (
    &lt;IconContext.Provider
      value={{style: { color: '#f4a200', fontSize: '50px' }}}
    &gt;
      &lt;div&gt;
        &lt;FaHeart /&gt;
        &lt;FaRegHeart /&gt;
      &lt;/div&gt;
    &lt;/IconContext.Provider&gt;
  );
}
 
export default Like;</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/09/Two-YellowHearts.png" class="kg-image" alt="Two-YellowHearts" width="600" height="400" loading="lazy"><figcaption>Dos corazones amarillos en línea</figcaption></figure><p>En el código de ejemplo, importamos el contexto de íconos de 'react-icons'. Luego usamos una función sin manejo de estado para renderizar los íconos dentro del contexto de íconos.</p><p>Observa que el contexto de íconos le ha dado a los íconos una presentación en línea (display: inline;) por defecto. Si quieres que los íconos se mantengan con una presentación en bloque, entonces agrega <code>display: 'block'</code> como una de las propiedades. En otras palabras, puedes pasar cualquier estilo que quieras para las fuentes en la etiqueta del contexto de íconos.</p><h2 id="c-digo-para-importar-todas-las-librer-as-de-conos-de-react-icons-">Código para importar todas las librerías de íconos de 'react-icons'</h2><p>En caso de que quieras usar íconos de otras librerías (además de aquellas que hemos discutido aquí), aquí están sus códigos de importación para que puedas acceder a ellas rápidamente:</p><pre><code>import { IconName } from "react-icons/ai"; //Ant Design Icons
import { IconName } from "react-icons/bs"; //Bootstrap Icons
import { IconName } from "react-icons/bi"; //Boxicons
import { IconName } from "react-icons/di"; //Devicon Icons
import { IconName } from "react-icons/fi"; //Feather 
import { IconName } from "react-icons/fc"; //Flat Color Icons
import { IconName } from "react-icons/fa"; //Font Awesome Icons
import { IconName } from "react-icons/gi"; //Game Icons
import { IconName } from "react-icons/go"; //Github Octicons Icons
import { IconName } from "react-icons/gr"; //Grommet-Icons
import { IconName } from "react-icons/hi"; //HeroIcons
import { IconName } from "react-icons/im"; //IcoMoon Free
import { IconName } from "react-icons/io"; //Ionicon4
import { IconName } from "react-icons/io5"; //Ionicon5
import { IconName } from "react-icons/md"; //Material Design Icons
import { IconName } from "react-icons/ri"; //Remix Icons
import { IconName } from "react-icons/si"; //Simple Icons
import { IconName } from "react-icons/ti"; //Typicons
import { IconName } from "react-icons/vsc"; //VS Code Icons
import { IconName } from "react-icons/wi"; //Weather Icons
import { IconName } from "react-icons/cg"; //css.gg
</code></pre><p>Todas las librerías de íconos disponibles en la página de 'react-icons' se usan de la misma manera que describimos en este artículo.</p><h2 id="conclusi-n">Conclusión</h2><p>Los íconos disponibles con 'react-icons' están altamente optimizados, son escalables y fáciles de usar. Espero haber podido ayudarte a aprender su funcionamiento básico para que puedas hacer uso de ellos. Puedes leer la <a href="https://react-icons.github.io/react-icons/">documentación</a> (en inglés) de 'react-icons' para aprender más.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
