<?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[ Rodrigo Alarcón - 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[ Rodrigo Alarcón - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 22 May 2026 15:16:30 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/roderknight/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Redux Thunk explicado con ejemplos ]]>
                </title>
                <description>
                    <![CDATA[ Redux Thunk es un middleware que nos permite retornar funciones, en lugar de solo acciones en Redux. Esto nos permite trabajar con acciones retrasadas y promesas. Uno de los principales casos de uso para este middleware es el manejo de acciones que no son asíncronas, por ejemplo, el uso de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/redux-thunk-explicado-con-ejemplos/</link>
                <guid isPermaLink="false">63951c0d980b9a08b63a6a7c</guid>
                
                    <category>
                        <![CDATA[ Redux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Rodrigo Alarcón ]]>
                </dc:creator>
                <pubDate>Wed, 21 Dec 2022 22:09:34 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/12/5f9c9d13740569d1a4ca35c4.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/redux-thunk-explained-with-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Redux Thunk Explained with Examples</a>
      </p><p>Redux Thunk es un middleware que nos permite retornar funciones, en lugar de solo acciones en Redux. Esto nos permite trabajar con acciones retrasadas y promesas.</p><p>Uno de los principales casos de uso para este middleware es el manejo de acciones que no son asíncronas, por ejemplo, el uso de Axios para enviar peticiones GET. Redux Thunk nos permite enviar esas acciones asíncronamente y resolver cada promesa que se ha retornado.</p><h2 id="instalaci-n"><strong><strong>Instal</strong>ación</strong></h2><p>Redux Thunk puede ser instalado ejecutando &nbsp;<code>npm install redux-thunk --save</code> o <code>yarn add redux-thunk</code> en la línea de comandos.</p><p>Debido a que es una herramienta de Redux, es necesario tener Redux previamente instalado. Una vez instalado, se habilita usando &nbsp;<code>applyMiddleware()</code>:</p><pre><code class="language-javascript">import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers/index';

// lo aplicamos al "store" de nuestra aplicación
const store = createStore(
  rootReducer,
  applyMiddleware(thunk)
);</code></pre><h2 id="como-usar-redux-thunk"><strong>Como usar<strong> Redux Thunk</strong></strong></h2><p>Una vez Redux Thunk ha sido instalado e incluido en el proyecto con <code>applyMiddleware(thunk)</code>, ya es posible enviar acciones asíncronamente.</p><p> Como ejemplo, aquí se tiene un incrementador de contador simple: </p><pre><code class="language-javascript">const INCREMENTAR_CONTADOR = 'INCREMENTAR_CONTADOR';

function incrementar() {
  return {
    type: INCREMENTAR_CONTADOR
  };
}

function incrementarAsync() {
  return dispatch =&gt; {
    setTimeout(() =&gt; {
      // Es posible invocar acciones sincrónicas o asicrónicas con "dispatch"
      dispatch(incrementar());
    }, 1000);
  };
}</code></pre><p>Y así es como se configuran las acciones de éxito y error al momento de trabajar con una API:</p><pre><code class="language-javascript">const OBTENER_USUARIO_ACTUAL = 'OBTENER_USUARIO_ACTUAL';
const OBTENER_USUARIO_ACTUAL_ERROR = 'OBTENER_USUARIO_ACTUAL_ERROR';
const OBTENER_USUARIO_ACTUAL_OK = 'OBTENER_USUARIO_ACTUAL_OK';

const obtenerUsuario = () =&gt; {
  return (dispatch) =&gt; { // Se retorna una función anónima
      
    // Acción inicial enviada
    dispatch({ type: OBTENER_USUARIO_ACTUAL });
      
    // Se retorna una promesa con acciones de éxito y error
    return axios.get('/api/auth/user').then(  
      usuario =&gt; dispatch({ type: OBTENER_USUARIO_ACTUAL_OK, usuario }),
      error =&gt; dispatch({ type: OBTENER_USUARIO_ACTUAL_ERROR, error })
    );
      
  };
};</code></pre><h2 id="m-s-informaci-n-"><strong>Más información<strong>:</strong></strong></h2><ul><li><a href="https://youtu.be/zrs7u6bdbUw">Vídeo tutorial de Redux (freeCodeCamp)</a></li><li><a href="https://carlosazaustre.es/como-funciona-redux-conceptos-basicos">Redux, conceptos básicos</a></li><li><a href="https://es.redux.js.org/docs/basico/uso-con-react.html">Redux, documentación oficial</a></li></ul> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
