React & Redux Toolkit - Bases y proyecto práctico

MonkeyWit
5 Aug 202148:46

Summary

TLDRThis tutorial offers an in-depth guide on managing global state in a React application using Redux Toolkit. It explains the benefits of using Redux for state management in large-scale apps and demonstrates a practical example, creating a React app from scratch. The process includes setting up the Redux store, configuring slices for state management, fetching data from an API, and displaying it in a component. The tutorial simplifies complex concepts, making Redux more accessible for developers.

Takeaways

  • 😀 This tutorial teaches how to manage the global state of a React application using a tool called Redux Toolkit.
  • 🔧 Redux Toolkit is an improvement over the older Redux, simplifying its use with React by reducing boilerplate code and verbosity.
  • 🌐 The script discusses the problem of state management in large or scaling applications, where passing state through multiple components can be cumbersome.
  • 📚 It explains the concept of a global state, which is a store that holds common information for various components, accessible directly without passing through props.
  • 🛠️ The tutorial includes a practical example of writing code in a React application, demonstrating the flow of information from parent to child components.
  • 📝 The process of creating a new React application using `create-react-app` and setting up the project structure is covered.
  • 🔄 The script describes the use of `react-redux` and `@reduxjs/toolkit` for state management and handling asynchronous operations with Redux Thunk middleware.
  • 🔑 The importance of actions and reducers in Redux is highlighted, with actions representing functions that carry new values and reducers updating the global state based on those values.
  • 🔍 The tutorial includes a step-by-step guide on creating a `slice` for user management within the Redux store, including setting up initial state and reducers.
  • 🌌 The video demonstrates fetching user data from an API and integrating it into the global state, making it available for any component to use.
  • 🔬 The use of `react-redux` hooks like `useDispatch` and `useSelector` is shown for dispatching actions and selecting parts of the state, respectively.

Q & A

  • What is Redux Toolkit and why is it used?

    -Redux Toolkit is a tool used to manage the global state of a React application. It simplifies the use of Redux by reducing boilerplate code and making the code less verbose.

  • What problem does Redux solve in a React application?

    -Redux solves the problem of managing the state across various components, especially in large applications where passing state through props can become complex and unmanageable.

  • How does information flow in a React component tree?

    -In a React component tree, information typically flows from parent components to child components through props.

  • What issues arise when scaling a React application without Redux?

    -When scaling a React application without Redux, managing state through props becomes cumbersome. Passing state and functions through multiple levels of the component tree can lead to complex and hard-to-maintain code.

  • What is the benefit of creating a global state store in Redux?

    -Creating a global state store in Redux allows multiple components to access shared state directly, without having to pass data through multiple levels of the component tree.

  • What are some alternatives to Redux for state management in React?

    -Alternatives to Redux for state management in React include the Context API (included with React), MobX, and other state management libraries.

  • How did Redux Toolkit improve upon the traditional Redux approach?

    -Redux Toolkit improved upon the traditional Redux approach by reducing the amount of boilerplate code, making it easier to set up and use Redux with less configuration and verbosity.

  • What is the role of a reducer in Redux?

    -A reducer in Redux is a function that determines how the state of the application changes in response to actions sent to the store. It takes the current state and an action, and returns the new state.

  • What is a 'slice' in Redux Toolkit?

    -A 'slice' in Redux Toolkit is a specific part of the Redux state, along with the reducers and actions related to that part of the state. It is a modular way to manage different pieces of state.

  • How do you connect a React component to the Redux store?

    -To connect a React component to the Redux store, you use the `useSelector` hook to access the state and the `useDispatch` hook to dispatch actions. The component is also wrapped with the `Provider` component, passing the store as a prop.

Outlines

00:00

📚 Introduction to Global State Management with Redux Toolkit

The video begins with an introduction to managing global state in a React application using Redux Toolkit. It explains the concept of Redux, when to use it, and sets the stage for a practical example. The tutorial will cover the challenges of passing state through multiple components and the benefits of using a centralized state management approach.

05:04

🛠 Setting Up a New React Application

The script describes the process of creating a new React application using 'create-react-app' and setting up the project structure. It includes removing unnecessary files and modifying the 'App.js' and 'index.js' to simplify the project. The video also mentions installing necessary libraries and setting up a basic component structure.

10:04

🎨 Adding Styling and Components with Bootstrap

The paragraph details adding Bootstrap for styling the application. It includes creating a 'NavBar' component with branding and setting up classes for dark themes and layout. The script also covers importing Bootstrap and setting up a container for the application's main content.

15:05

🔍 Fetching User Data from an API

The tutorial moves on to fetching user data from a public API, explaining how to access and use endpoints to retrieve user information. It discusses the structure of the API response and how to select specific data points, such as user details including name, email, and avatar.

20:08

📝 Creating a Static User List Component

The script describes creating a 'UserList' component to display a static list of users. It includes setting up the component structure, using the 'map' function to iterate over users, and displaying user details like name, email, and avatar in a card layout.

25:08

🔄 Configuring Redux for State Management

This section delves into configuring Redux using Redux Toolkit to manage the application's state. It explains creating a 'store', setting up 'slices' for different parts of the state, and using 'configureStore' to initialize the store. The video also covers wrapping the application with a 'Provider' to make the store accessible to all components.

30:08

📚 Creating User Slice for Redux State

The tutorial focuses on creating a 'users' slice within Redux to manage user-related state. It involves using 'createSlice' from Redux Toolkit to define the initial state and reducers for handling state updates. The script also explains exporting the slice's reducer to be included in the application's global state.

35:10

🌐 Making Asynchronous API Calls with Redux

The script covers making asynchronous API calls to fetch user data and integrate it with Redux state management. It explains using the 'fetchUsers' thunk function to perform the API call and 'createAsyncThunk' to handle the asynchronous operation, updating the state with the fetched users.

40:11

🔧 Dispatching Actions to Update the State

This part explains how to dispatch actions to update the Redux state with the fetched user data. It details creating an action called 'setUserList' to handle the new user list and using the 'dispatch' function to execute the action, updating the state with the new user data.

45:13

🔄 Consuming Redux State in the User List Component

The final paragraph discusses consuming the Redux state in the 'UserList' component. It explains using the 'useSelector' hook to select the user list from the global state and displaying it in the component. The video concludes by emphasizing the simplicity of Redux Toolkit for managing state in larger applications.

Mindmap

Keywords

💡Redux Toolkit

Redux Toolkit is an enhanced version of Redux that simplifies state management in React applications. It reduces boilerplate code and streamlines the process of managing global state, making it easier for developers to focus on core functionalities. In the video, the instructor uses Redux Toolkit to manage state across a React application, highlighting its practical benefits.

💡Global State

Global state refers to a centralized state that is accessible by all components within a React application. This approach helps avoid 'prop drilling' and simplifies state management, especially in large applications. The video discusses creating a global store to hold shared data, enabling components to access necessary information without complex prop chains.

💡Prop Drilling

Prop drilling is the process of passing data through multiple layers of components in React. It can become cumbersome in larger applications where distant components need to share state. The video addresses this issue by demonstrating how Redux Toolkit allows for direct access to global state, bypassing the need for prop drilling.

💡Slice

In Redux Toolkit, a slice represents a portion of the state and includes reducers and actions related to that specific part of the state. Each slice simplifies state management by encapsulating logic for a particular domain. The video showcases creating a 'users' slice to manage user data, illustrating how slices help organize application state.

💡Reducer

A reducer is a function in Redux that determines changes to the application's state based on dispatched actions. It takes the current state and an action as arguments, returning a new state. In the video, reducers are used within slices to update the user list in the global state when data is fetched from an API.

💡useSelector

The useSelector hook allows React components to extract data from the Redux store's state. It simplifies state selection by providing a way to access specific parts of the state directly within a component. The video demonstrates using useSelector to retrieve the user list from the global state and display it in the user interface.

💡useDispatch

useDispatch is a hook that provides access to the dispatch function from the Redux store, allowing components to send actions. It is crucial for triggering state updates based on user interactions. The video uses useDispatch to dispatch actions that update the global state when fetching user data from an API.

💡Thunk

A thunk is a function that returns another function, commonly used in Redux for handling asynchronous operations. In the video, thunks are used to fetch data from an API, with the fetched data then being dispatched to update the global state. This approach allows for managing side effects in Redux applications effectively.

💡React Redux

React Redux is the official Redux UI binding library for React. It provides hooks and components that make it easier to connect React components to a Redux store. The video illustrates using React Redux's Provider to wrap the application, ensuring that all components have access to the Redux store.

💡Boilerplate

Boilerplate refers to the repetitive code necessary to set up a particular structure or framework. Redux Toolkit significantly reduces boilerplate compared to traditional Redux, simplifying the setup and reducing the amount of code required. The video emphasizes this reduction, making state management more straightforward and efficient.

Highlights

Introduction to managing global state in a React application using Redox Toolkit.

Explanation of Redux and when to use it for state management.

Practical example of writing code in a React application using Redox Toolkit.

Discussion on the challenges of passing state through multiple components in a large application.

Introduction of global state to solve complex state management issues.

Overview of different tools and libraries available for state management, including React's built-in context and Recoil.

Explanation of the simplification of Redux with the introduction of Redux Toolkit.

Demonstration of setting up a new React application using 'create-react-app'.

Step-by-step guide to installing necessary libraries for Redux in a React project.

Creating a header component with branding for the React application using Bootstrap.

Explanation of the structure and flow of information in a Redux application, starting from the user interface.

Description of actions and reducers in Redux and their roles in updating the global state.

Practical implementation of Redux in a React application to manage a shopping cart example.

Guide to creating a global state for user management in a React application using Redux Toolkit.

Integration of an external API to fetch user data and store it in the Redux global state.

Use of React-Redux's `useDispatch` hook to dispatch actions and update the global state.

Consumption of global state data in a React component using the `useSelector` hook.

Final demonstration of a fully functional user list component displaying data from the Redux global state.

Conclusion summarizing the benefits of using Redux for state management in large-scale React applications.

Transcripts

play00:00

[Música]

play00:00

hola en este tutorial aprenderemos a

play00:03

gerenciar el estado de una aplicación de

play00:05

react de manera global usando una

play00:07

herramienta llamada red books toolkit

play00:09

aprenderemos que es redux cuando usarlo

play00:12

y desde luego haremos un ejemplo

play00:13

práctico escribiendo algo de código en

play00:16

una aplicación de react el flujo de la

play00:18

información a lo largo del árbol de

play00:19

componentes se da desde los componentes

play00:22

padres hacia los componentes hijos y por

play00:24

lo general el paso de la información se

play00:26

hace a través de las próx es decir que

play00:28

si yo quiero pasar el estado de este

play00:30

componente hacia este otro tengo que

play00:32

abrirme camino a través de las próx

play00:34

hasta llegar ahí y si quiero pasar el

play00:36

estado o varios estados de ese

play00:38

componente tengo que pasar también las

play00:40

funciones que modifican a ese estado y

play00:43

eso para todos los componentes en una

play00:45

aplicación pequeña esto es viable y con

play00:47

certeza no nos va a dar tanto trabajo el

play00:50

problema es cuando la aplicación ya es

play00:52

grande o tiende a escalar imaginemos

play00:55

entonces una aplicación un poco más

play00:56

compleja como esta de aquí si queremos

play00:59

por ejemplo pasar el estado desde este

play01:01

componente hacia este otro de aquí

play01:02

tenemos que dar toda una vuelta si lo

play01:05

hacemos a través de las próx

play01:06

y eso ocurre para todos los componentes

play01:08

que comparten información entre ellos y

play01:11

que se encuentran de ciertas formas

play01:12

distantes en el árbol de componentes

play01:14

cuando esto ocurre decimos que tenemos

play01:17

un problema de gerenciamiento del estado

play01:19

de la aplicación afortunadamente ese

play01:21

problema ya tiene una solución y es

play01:23

crear un estado global es decir un estor

play01:26

que almacena el estado de la aplicación

play01:29

el estado con todas aquellas

play01:30

informaciones que son comunes para

play01:33

varios de nuestros componentes y a la

play01:35

cual de los componentes pueden accesar

play01:37

directamente sin tener que dar tantas

play01:39

vueltas a través de las propias y para

play01:42

ayudarnos con esto existen varias

play01:44

herramientas o bibliotecas que podemos

play01:46

usar primeramente tenemos la apei con

play01:48

text que viene incluida en la propia

play01:50

biblioteca de rayak y de la cual les voy

play01:52

a estar hablando en un próximo vídeo

play01:53

luego tenemos a movex que también es una

play01:56

herramienta bastante interesante y que

play01:58

con certeza les voy a traer en un

play02:00

próximo vídeo y finalmente tenemos a

play02:02

redux o el antiguo redux por decirlo de

play02:05

alguna manera el antiguo redux era algo

play02:07

complejo de entender y de usar para

play02:10

comenzar a usarlo teníamos que crear

play02:11

mucho código de boiler plate

play02:13

muchos archivos y eran bastante verbos

play02:15

pero hoy en día existe una herramienta

play02:18

llamada red uts toolkit que es de cierta

play02:20

forma una mejora al antiguo redux y que

play02:24

simplificó muchísimo la manera de usar

play02:26

redux con react evitando mucho código de

play02:30

boiler plate y también evitando la

play02:31

verbosidad para que nosotros nos podamos

play02:33

centrar o concentrar en desarrollar lo

play02:36

que es importante para nuestra

play02:38

aplicación y de preocuparnos por hacer

play02:40

tantas configuraciones así que redux

play02:43

toolkit es el que vamos a estar usando

play02:45

en este vídeo con un ejemplo práctico

play02:47

ahora vale la pena conocer un poco de la

play02:50

estructura funcional de redux y todo

play02:52

comienza en la interfaz de usuario vamos

play02:55

a imaginar que esto de aquí es un

play02:56

carrito de compras que como vemos está

play02:58

en 0 productos pero el usuario lo quiere

play03:01

actualizar a 10 productos digitando el

play03:03

valor de 10 en este input eso entonces

play03:06

genera un evento y ese evento va a

play03:09

ejecutar un despacho que en la práctica

play03:11

va a ser un juego llamado justice page

play03:13

el cual viene incluido en una biblioteca

play03:15

llamada react redux que estaremos usando

play03:18

ese despacho entonces

play03:20

es lanzar una acción que una acción no

play03:23

es más que una función que toma ese

play03:25

nuevo valor es decir el valor de 10 y se

play03:28

lo pasa al reducir el reducir entonces

play03:30

es quien se encarga de actualizar el

play03:33

estado global de la aplicación basado en

play03:36

un estado inicial es decir es el reducir

play03:38

quién va a colocar ese nuevo valor en el

play03:41

estado de la aplicación y luego de que

play03:43

ha sido actualizado el estado global de

play03:45

la aplicación entonces ya va a estar

play03:47

disponible para que seleccionemos ese

play03:50

estado a través de un selector que en la

play03:52

práctica también va a ser un juego

play03:54

llamado y un selector incluido en la

play03:56

misma biblioteca de react redux que

play03:58

estaremos usando entonces es el selector

play04:01

lo que nos va a permitir es seleccionar

play04:04

la parte del estado en el que estamos

play04:07

interesados es decir en el valor de 10 y

play04:09

lo vamos a refrescar entonces en nuestra

play04:11

interfaz de usuario de esa manera ahora

play04:13

nuestro carrito tiene un valor de 10 y

play04:16

básicamente en eso consiste redux en

play04:19

actualizar un estado global para que

play04:21

todos los componentes que estén

play04:23

suscritos a ese estado puedan reflejar

play04:25

el nuevo

play04:26

valor en la interfaz de usuario muy bien

play04:29

ahora vamos a ver en la práctica cómo

play04:31

podemos empezar a usar redux en una

play04:33

aplicación de rea que vamos a hacer un

play04:35

ejemplo bastante sencillo pero que nos

play04:37

permita entender los conceptos que

play04:39

acabamos de ver y bueno para eso debemos

play04:41

partir de una nueva aplicación de rayak

play04:43

así que bueno yo en mi caso la voy a

play04:45

colocar en la carpeta de documents y ahí

play04:48

voy a decirle que quiero crear una nueva

play04:51

aplicación de riego usando create react

play04:54

up y bueno el nombre que le voy a dar a

play04:56

esta aplicación va a ser en este caso

play04:57

rayak redux algo como así redux el guión

play05:03

up algo de esta manera voy a dar un

play05:06

enter y se va a comenzar a crear la

play05:08

aplicación esto tal vez demore un

play05:10

poquito así que voy a pausar el vídeo y

play05:12

cuando se haya creado la aplicación yo

play05:13

vuelvo aquí luego de que ha terminado de

play05:16

crear la aplicación lo que voy a hacer

play05:18

es entonces ir hasta la carpeta de esa

play05:21

aplicación y estando ahí voy a ejecutar

play05:23

el comando con espacio punto simplemente

play05:26

para abrir ese proyecto con visual

play05:28

studio code miren que aquí bueno ya me

play05:31

está abriendo el proyecto y este

play05:32

proyecto que tengo aquí es

play05:33

proyecto base que es creado con el

play05:36

comando create ya que es realmente el

play05:38

típico demo que viene con ese comando

play05:41

así que bueno aquí voy a tener una serie

play05:43

de archivos que no voy a necesitar así

play05:45

que los voy a eliminar para que

play05:47

simplemente el proyecto quede un poco

play05:49

más limpio bien todos estos archivos que

play05:52

estoy seleccionando simplemente los voy

play05:54

a adelantar porque no los necesito y voy

play05:57

a dejar simplemente el archivo de app

play05:59

punto js index puntos totales aquí en

play06:03

index punto está s

play06:04

voy a limpiar también algunas cosas

play06:06

estoy aquí no lo necesito esto de aquí

play06:08

lo voy a remover este importe también y

play06:11

sólo voy a dejar esto de esta manera muy

play06:14

bien aquí voy a cerrar este index y en

play06:16

el archivo de app

play06:17

js también voy a realizar algunas

play06:20

modificaciones esto de aquí por ejemplo

play06:22

no lo necesito así que lo voy a quitar y

play06:26

aquí por ahora tal vez también voy a

play06:29

remover esto de aquí voy a colocar

play06:30

simplemente un h1 que diga por ejemplo

play06:34

react

play06:36

returns o algo así muy bien voy a

play06:40

guardar esto de aquí y lo que voy a

play06:43

hacer entonces es abrir una nueva

play06:45

terminal y bueno tal vez debería

play06:48

ejecutar la aplicación para ver esto

play06:49

aquí pero bueno yo voy a empezar de una

play06:51

vez

play06:52

instalando las bibliotecas que voy a

play06:54

necesitar todas las bibliotecas que

play06:57

necesito para esto así que lo que voy a

play06:59

hacer aquí es usar jiang tu puedes usar

play07:02

npm install pero bueno yo voy a estar

play07:04

usando ya at y lo que voy a hacer es

play07:06

entonces e ir tal vez aquí a

play07:09

documentación de redux toolkit para ver

play07:14

un poco de lo que necesito y como puedo

play07:16

comenzar miren que aquí en reduction

play07:18

toolkit punto está ese punto o hereje

play07:20

entramos a la página oficial de redux

play07:22

toolkit aquí en get started vamos a

play07:25

tener algunas instrucciones de cómo

play07:27

comenzar por ejemplo aquí tenemos que

play07:30

nos dicen que podemos inclusive crear

play07:32

una aplicación con criteria up y usar un

play07:36

template de redux tanto para javascript

play07:39

plano o javascript puro como para

play07:42

en este caso pues yo les voy a mostrar

play07:44

cómo hacerlo desde cero sin usar el

play07:46

template pero bueno aquí entonces vamos

play07:49

ahora a ir a la parte de quick start y

play07:52

aquí bueno ya nos van a dar algunas

play07:53

instrucciones de cómo comenzar realmente

play07:56

a configurar redux bien que aquí nos

play07:58

dicen que debemos instalar estas dos

play08:00

bibliotecas de aquí que es la biblioteca

play08:02

de redux js barra toolkit y la

play08:06

biblioteca de riad critics así que voy a

play08:08

copiar estas dos bibliotecas de aquí

play08:10

realmente y las voy a traer aquí voy a

play08:13

colocar y entonces ya como te dije tú

play08:15

puedes usar npm install y bueno también

play08:18

voy a instalar otras dos bibliotecas que

play08:20

ya están usando una es actions que me va

play08:23

a permitir hacer las llamadas de red es

play08:26

decir consultar alguna ave y también voy

play08:29

a estar usando bus trap para estilizar

play08:32

la aplicación así que simplemente voy a

play08:34

decirle aquí que es buscar action riad

play08:37

grid books y rick perry books js barra

play08:41

toolkit estas son las bibliotecas que

play08:43

voy a estar usando cuidar un enter y se

play08:44

van a comenzar a crear aquí sólo debemos

play08:47

esperar un poco pero bueno

play08:49

esperamos ya podríamos ir creando

play08:52

algunas cosas no entonces por ejemplo

play08:54

aquí en la carpeta de src yo voy a crear

play08:57

una nueva carpeta llamada componentes en

play09:00

donde voy a colocar nuevos componentes

play09:02

que voy a estar creando y bueno un

play09:04

primer componente de hecho va a ser una

play09:06

especie de navegación o al menos de un

play09:08

header con el brand para que la

play09:10

aplicación no quede tan simple entonces

play09:12

aquí voy a colocar un perdón index punto

play09:17

a está ese no voy a colocar un archivo

play09:18

llamado mad bar punto j es perfecto y

play09:22

aquí bueno voy a usar un snippets de

play09:25

riad que es el área

play09:27

fcc para crear una estructura aquí del

play09:30

componente y esto me crea esta parte de

play09:31

código bueno miren que aquí ya se

play09:32

instalaron las bibliotecas vamos a

play09:35

verificar aquí en el path cage y jason

play09:38

hemos instalado vustra hemos instalado

play09:40

el jack reed ox hemos instalado action y

play09:43

aquí en red uts js tool kit muy bien

play09:47

entonces tenemos las bibliotecas

play09:48

instaladas bueno sigamos aquí entonces

play09:51

yo estaba creando este hardware de aquí

play09:53

para poder demostrar el brand de la

play09:56

aplicación y que no quede tan simple de

play09:58

hecho ya es simple la aplicación

play10:00

entonces sólo para que se muestre un

play10:01

poco mejor bien entonces aquí que es lo

play10:04

que voy a hacer bueno vamos a colocar

play10:06

aquí el paréntesis perfecto y aquí

play10:09

dentro de estos paréntesis lo que va a

play10:11

retornar es un componente en up muy bien

play10:15

y dentro un componente dif y dentro un

play10:18

componente del tipo y muy bien aquí esta

play10:22

preferencia va a ser hacia el home por

play10:25

la ruta principal y bueno aquí vamos a

play10:28

colocar algunas clases de booster no

play10:30

entonces por ejemplo bueno de hecho voy

play10:32

a comenzar por el comienzo aquí voy a

play10:35

colocar que una clase llamada network

play10:39

que también otra clase llamada nad bar y

play10:42

el tema dark y de background también

play10:45

vamos a colocar aquí dark muy bien y

play10:48

esto sólo para darle un poco de estilo

play10:50

aquí vamos a usar otra clase de bus trap

play10:54

llamada container y aquí vamos a usar

play10:58

entonces una clase de booster llamada

play11:02

lavar brand estas son clases típicas en

play11:05

un brand con busta aquí le voy a colocar

play11:08

por ejemplo entonces lo que tengo allá

play11:10

en él

play11:12

en el h 1 voy a quitar esto de aquí de

play11:15

hecho y lo voy a colocar justo aquí muy

play11:18

bien pero bueno para que estas clases de

play11:20

bus trap funcionen realmente yo tengo

play11:22

que importar booster porque lo instalé

play11:24

pero no lo estoy importando así que aquí

play11:27

en el index punto j s yo necesito hacer

play11:29

es donde yo voy a colocar aquí un

play11:30

comentario que diga vustra y aquí voy a

play11:34

colocar un importe y vamos a importar

play11:37

booster bueno como podemos importar

play11:39

vuestro bueno colocamos entonces aquí

play11:41

mostrar que es el módulo que instale

play11:44

barra vista una carpeta que está aquí

play11:47

dentro barra css barra y el archivo

play11:51

llamado bus track

play11:54

vuestros ss

play11:57

y tener que escribirlo de hecho miren

play11:59

que aquí lo podemos ver en la carpeta de

play12:01

not models si buscamos aquí por booster

play12:05

podemos haber instalado

play12:08

a ver aquí por aquí

play12:11

aquí debe estar babylon browser

play12:16

por aquí debería estar buscan aquí justo

play12:18

aquí entonces está vuestra list css y

play12:22

aquí debería haber un archivo llamado

play12:24

booster css miren no es este de aquí

play12:28

entonces si está ahí así que lo voy a

play12:31

llamar entonces kivus trump

play12:34

punto cesc es muy bien perfecto de esta

play12:39

manera entonces ya lo habremos importado

play12:41

cerramos aquí y estas clases de bustra

play12:44

ya estarían funcionando muy bien

play12:46

entonces aquí ya no vamos a necesitar

play12:47

este h1 lo que voy a hacer es importar

play12:50

es en ámbar que cree lo seleccionado

play12:53

aquí y el llama no importa que

play12:54

automáticamente muy bien perfecto aquí

play12:57

vamos a cerrar esto doy un control ese y

play13:00

ahora voy a abrir la terminal de nuevo

play13:02

aquí voy a limpiar esta terminal un poco

play13:04

y vamos a dar entonces un hard start

play13:07

perfecto para iniciar la aplicación

play13:10

bueno entonces aquí ya se me debería

play13:13

iniciar la aplicación debería estar

play13:15

iniciando uno iniciado bueno mientras

play13:18

tanto entonces qué podemos bueno aquí de

play13:20

hecho ya ya que iniciando pero bueno

play13:21

aquí mientras tanto podemos seguir

play13:23

haciendo algunas cosas de hecho voy a

play13:24

cerrar esta carpeta de móviles perfecto

play13:26

aquí yo lo que quiero realmente crear

play13:29

como aplicación es una simple lista de

play13:33

usuarios pero que esa lista de usuarios

play13:35

quede en el estado global de la

play13:37

aplicación con redux entonces voy a

play13:39

tener un componente que

play13:41

lista a esos usuarios esos usuarios los

play13:44

voy a traer desde una buena de hecho

play13:46

miren que aquí ya la aplicación inicio y

play13:49

miren la estamos viendo aquí tenemos un

play13:50

hardware aquí bien simple sólo con el

play13:53

brand y aquí yo quiero crear entonces

play13:55

una lista de usuarios estos usuarios y

play13:57

los vamos a traer desde una app que es

play14:01

una app gratuita llamada red red punto y

play14:05

si ustedes entran aquí la pueden ver en

play14:09

internet está un poco lento así que está

play14:11

demorando aquí para mostrar las cosas

play14:12

pero miren que aquí bajamos y tenemos

play14:14

todos los endpoints que podemos usar de

play14:16

esa pei para obtener todos los usuarios

play14:19

una lista de usuarios de hecho podemos

play14:21

explicar aquí y miren que este sería el

play14:23

en point que podemos usar bueno le

play14:25

podemos pasar parámetros por ejemplo que

play14:27

me está diciendo que la página 2 nos va

play14:29

a traer los usuarios de la página 2 y yo

play14:30

clico aquí me muestra esos datos de la

play14:33

ape y miren esta estructura de datos de

play14:35

la ape y con bueno algunos parámetros

play14:39

aquí y una red llamado deira que va a

play14:42

tener dentro objetos cada objeto es un

play14:44

usuario con haití email

play14:47

nombre apellido y un avatar que es la

play14:49

imagen bueno si usted no están viendo la

play14:51

estructura de la pei de esta forma

play14:53

probablemente porque no tengan esta

play14:55

extensión llamada jason viewer que yo

play14:57

tengo instalada aquí ustedes tal vez la

play14:58

estén viendo así y si ya la tiene

play15:00

instalada entonces la están viendo de

play15:02

esta manera muy bien entonces qué es lo

play15:05

que yo puedo hacer aquí por ejemplo le

play15:07

puedo decir que bueno miren que aquí

play15:09

tiene un total de 12 usuarios y sólo

play15:11

sólo dos páginas estamos actualmente en

play15:14

la página 2 y está mostrando 6 usuarios

play15:17

por página entonces aquí está desde el

play15:19

usuario 7 hasta el 12 porque está en la

play15:22

página 2 pero yo le puedo decir aquí

play15:24

camps que quiero otro parámetro entonces

play15:26

aquí por ejemplo le puedo decir que

play15:27

quiero el parámetro de usuarios por

play15:30

página y le puede ser que me muestre 12

play15:34

usuarios es decir todos los usuarios que

play15:35

tienen la pei que son 12 que me los

play15:37

muestra todos entonces miren desde el 1

play15:39

hasta el 2 muy bien ahí ya tengo los dos

play15:42

usuarios entonces éste en cuenta es el

play15:44

que voy a estar usando para obtener esos

play15:47

usuarios pero bueno a principio

play15:49

yo lo que voy a hacer es que me voy a

play15:52

llevar tal vez unos tres usuarios de

play15:54

aquí o cuatro usuarios

play15:55

los voy a llevar así de manera que voy a

play15:58

copiar y le voy a colocar que de manera

play16:00

fija no lo voy a colocar de manera fija

play16:02

pero bueno para eso voy a crear también

play16:06

otro otro componente como les dije no lo

play16:08

he creado entonces no lo voy a pegar

play16:10

estos usuales todavía aquí voy a crear

play16:12

primero el componente ese componente se

play16:14

va a llamar y user list de lista de

play16:17

usuarios

play16:19

js muy bien aquí vamos a usar el snipe

play16:21

de la fcc que me crea aquí la estructura

play16:26

perfecto y aquí dentro de este

play16:29

componente es donde voy a crear aquí una

play16:32

constante llamada users que va a ser

play16:35

igual a un rey y dentro de la raíz voy a

play16:37

colocar esos usuarios que copie de ella

play16:39

que van a estar fijos por ahora ellos

play16:41

están fijos muy bien ahora qué es lo que

play16:44

quiero hacer aquí dentro este componente

play16:46

bueno quiero listar a cada uno de esos

play16:48

usuarios y mostrarlos en la interfaz de

play16:50

usuario esto de aquí hasta ahora sería

play16:53

básicamente crear la estructura de la

play16:55

aplicación no hemos hecho nada con redux

play16:56

pero ya lo vamos a hacer

play16:58

primeramente entonces vamos a colocar

play17:01

aquí lo bueno vamos a dejar el sedif

play17:04

realmente y vamos a colocarle una clase

play17:06

de bustra llamada container

play17:11

container muy bien dentro vamos a

play17:13

colocar aquí otro dif y le vamos a

play17:16

colocar también una clase de bus trap

play17:18

que va a ser la clase road para crear

play17:21

una fila y bueno dentro de esa fila

play17:24

entonces van a ver columnas en cada

play17:26

columna va a haber una tarjeta con un

play17:28

usuario esa es la idea pero entonces yo

play17:31

necesito integrar a esos usuarios

play17:32

entonces como yo los usuarios los tengo

play17:35

aquí users los puedo integrar a través

play17:37

de la función map esa función map

play17:40

entonces tiene aquí dentro una función

play17:43

que le voy a colocar que un rector

play17:44

implícito y dentro va a tener entonces

play17:47

un 10 y bueno ese dif a ver lo

play17:51

completamos aquí

play17:54

perfecto y ese día va a tener una clase

play17:57

de buscar

play17:59

qué es una columna con md y le vamos a

play18:03

decir qué bueno que aquí por ejemplo sea

play18:05

3 para que muestre 44 usuarios en por

play18:10

cada fila no en pantalla normal de esta

play18:13

pantalla que estoy usando muy bien

play18:15

ahora esto de aquí entonces recibe a un

play18:19

usuario y también recibe puede recibir

play18:22

aquí un index no así que bueno ese index

play18:24

de yo lo puedo usar en derecho para

play18:26

colocar aquí el kit entonces aquí

play18:29

colocamos index también podríamos usar

play18:30

el aire de cada usuario aquí como aquí

play18:32

pero es vamos a usar el indus recuerden

play18:34

que el kiel siempre lo colocamos cuando

play18:36

es un componente que va a ser repetido

play18:40

varias veces dentro de una integración

play18:41

muy bien y aquí vamos a colocar dentro

play18:44

otro 10

play18:45

con otra clase de gusta como les dije

play18:48

aquí al principio solo estamos armando

play18:50

la estructura de la aplicación aquí esto

play18:53

va a ser un kart y dentro de secar vamos

play18:55

a tener por ejemplo una imagen

play18:58

esa imagen entonces va a ser el avatar y

play19:01

aquí nosotros vamos a colocar qué

play19:05

realmente la url de esa imagen va a ser

play19:08

el avatar de cada usuario entonces cada

play19:10

usuario tiene aquí una propiedad llamada

play19:13

avatar perfecto

play19:15

bueno aquí podemos de una vez agregar

play19:16

algo más podemos agregar otro 10 con el

play19:19

cuerpo vamos a colocar que una clase de

play19:22

bus trap que va a ser el cuerpo harvad y

play19:25

el cuerpo de esa tarjeta y nos vamos a

play19:28

mostrar a cada usuario y aquí vamos a

play19:31

colocar un h5 que tenga entonces por

play19:35

ejemplo el nombre e incluso el apellido

play19:37

entonces vamos a colocarlo aquí en un

play19:39

string en la forma de template vamos a

play19:42

decirle que me coloque aquí por ejemplo

play19:47

a user punto

play19:50

first a ver fierce name perfecto y que

play19:54

aquí deje un espacio y luego coloque a

play19:58

ver el símbolo de dólar y recuerden que

play20:01

aquí estamos usando strings como

play20:02

templates entonces yo puedo colocarlos

play20:04

de esta manera muy bien aquí sería las

play20:07

name muy bien y aquí debajo podemos

play20:10

colocar inclusive un parágrafo y este

play20:13

parágrafo

play20:14

bueno aquí tendría entonces el el email

play20:17

colocamos aquí y usher punto email muy

play20:21

bien esto también lo podemos colocar

play20:22

aquí en la clase de buster llamada card

play20:27

esta carta

play20:30

carthage y aquí está este h 5 vamos a

play20:34

colocarle también clases de buscar para

play20:35

que quede bien y le colocamos aquí un

play20:38

carl tyson

play20:42

perfecto entonces si yo guardo esto de

play20:44

aquí si guardo los cambios y voy a mi

play20:46

aplicación miren qué bueno de hecho no

play20:49

me está mostrando aún nada porque no lo

play20:50

he importado no debe importarlo aquí

play20:52

entonces vamos a decirle que quiero a el

play20:55

componente de user list

play20:58

a ver bien que le importa

play21:00

automáticamente esto de aquí lo podemos

play21:02

solucionar este error lo podemos

play21:03

solucionar colocando un

play21:06

fragmentos justamente aquí porque no

play21:09

podemos retornar varias cosas desde un

play21:11

retorno entonces aquí solo debemos

play21:13

retornar una cosa así que colocamos un

play21:15

fragmento ahora si se fue el error y

play21:17

miren que aquí ya me está mostrando esos

play21:19

cuatro usuarios que coloque fijos el

play21:21

nombre el apellido y el email muy bien

play21:24

eso lo estamos haciendo de manera fija

play21:27

aquí pero qué es lo que yo quiero hacer

play21:28

bueno yo lo que quiero hacer realmente

play21:30

es una llamada de red o una consulta a

play21:34

esa p y que sus datos de esos usuarios o

play21:37

sea esta lista de usuario que coloque

play21:39

aquí fija quiero que se guarden en un

play21:41

estado global ni siquiera en el estado

play21:42

del componente quiero que se guarden en

play21:44

el estado global va a ser muy simple una

play21:47

aplicación muy simple pero es para hacer

play21:49

el ejercicio de entender cómo funciona

play21:51

redux entonces que lo que vamos a hacer

play21:54

vamos a comenzar a configurar redux para

play21:57

poder hacer la llamada de red obtener

play21:59

estos datos de los usuarios y colocarlos

play22:01

en el estado global de la aplicación y

play22:03

luego consumir esos datos desde ese

play22:05

estado global de la aplicación entonces

play22:08

muy bien aquí vamos a venir a el src

play22:11

creamos

play22:12

una nueva carpeta yo lo voy a llamar

play22:14

store

play22:16

algunos la suelen llamar redux yo la

play22:18

llamo store pero bueno sólo depende de

play22:19

cada uno y dentro de estorbo ya colocar

play22:22

un archivo llamado index punto j es y

play22:26

aquí es donde voy a configurar la store

play22:28

entonces qué es lo que voy a decirle

play22:30

bueno quiero decirle que aquí quiero

play22:32

importar primeramente tengo que

play22:34

configurar la store no entonces para eso

play22:37

tengo que importar desde redox toolkit

play22:41

desde la biblioteca que instalamos

play22:43

quiero importar una función llamada

play22:46

configure store para configurar las

play22:49

tornas muy bien y luego tengo que

play22:51

simplemente usar la configurar store

play22:54

bien esto de aquí recibe un objeto

play22:58

y ese objeto recibe o debe tener un

play23:02

reducir

play23:03

y se reduce también es un objeto y este

play23:06

reducir de aquí realmente va a ser un

play23:09

reducir formado por muchos otros reduce

play23:12

es que ya crearemos para cada parte del

play23:16

estado de la aplicación que nosotros

play23:17

queramos por ejemplo yo puedo crear un

play23:19

reducir para usuarios otros reduce para

play23:22

productos otro reducir para facturas

play23:25

etcétera no dependiendo de los dominios

play23:27

que tenga mi aplicación yo creo parte

play23:29

del estado de la aplicación de esa forma

play23:31

y luego los uno a través de un único

play23:34

reduce que es el reduce de el de la

play23:38

start o del estado global no entonces

play23:41

miren que aquí básicamente con esto ya

play23:43

la he configurado pero bueno debo

play23:45

entonces exportar debo exportar este

play23:48

está store que estoy configurando aquí

play23:51

así que le voy a decir simplemente que

play23:52

las porte como un default

play23:55

la exporta aquí perfecto guardamos los

play23:58

cambios y con esto ya la habremos

play23:59

configurado bastante sencillo sin tantas

play24:02

líneas de código antes con el ruido es

play24:04

antiguo teníamos que realizar muchas

play24:06

configuraciones aquí ahora ya no hacemos

play24:08

tanta cosa ahora necesito entonces

play24:11

pasarle esa store a todos los

play24:14

componentes de la aplicación y eso lo

play24:16

tengo que hacer a través de un provider

play24:18

y bueno ya la biblioteca de read extrae

play24:22

un componente provider entonces

play24:24

simplemente lo debo usar aquí entonces

play24:27

en el componente up

play24:30

simplemente le voy a decir que aquí va a

play24:31

estar lo de read ocs y voy a importar

play24:35

o importar ese provider desde la

play24:39

biblioteca de riac redux que también

play24:41

habíamos instalado entonces aquí

play24:43

simplemente voy a decirle que quiero el

play24:46

componente provider este provider es un

play24:49

componente así que simplemente lo voy a

play24:51

usar y lo voy a colocar aquí por ejemplo

play24:52

él debe estar arropando como el es un

play24:56

rapper es un componente wrapper es un

play24:59

provider tiene que estar arropando todos

play25:01

los componentes que nosotros queremos

play25:02

que tengan acceso a la store es decir al

play25:06

estado global

play25:07

entonces ese provider va a estar

play25:09

arropando los dos componentes que

play25:11

nosotros tenemos aquí y aquí store

play25:14

simplemente va a estar es una propiedad

play25:18

que le pasamos al provider y que va a

play25:20

tener aquí como valor el store que

play25:22

nosotros deberíamos estar importando una

play25:24

inclusión no lo importado todavía así

play25:26

que lo voy a colocar aquí import store

play25:30

lo voy a importar desde el store que

play25:33

acabe de crear aquí está en la carpeta

play25:35

store así este store lo puedo usar aquí

play25:38

pasársela aquí que es este de aquí

play25:41

perfecto guardamos y con eso entonces ya

play25:43

habremos configurado la store y ya la

play25:45

estamos pasando a través del provider al

play25:48

resto de la aplicación muy bien que

play25:51

guardamos los cambios y ya no tendríamos

play25:54

que hacer más nada aquí entonces ahora

play25:56

lo que debemos hacer es comenzar a crear

play25:58

nuestros reduce de cada parte del estado

play26:02

de la aplicación y para eso yo voy a

play26:04

volver aquí a la carpeta store y voy a

play26:06

crear una nueva carpeta dentro llamada

play26:08

slice est

play26:11

esto lo puedes llamar tú de la manera

play26:13

que quieras pero bueno yo por convención

play26:15

voy a colocar esa carpeta aquí en slice

play26:16

es y dentro yo suelo colocar una carpeta

play26:19

para cada dominio de cierta forma cada

play26:21

dominio del estado entonces por ejemplo

play26:24

yo voy a tener un slice o un reducir

play26:27

para el usuarios entonces yo creo dentro

play26:30

una carpeta llamada users y dentro de

play26:34

esa carpeta voy a tener un archivo index

play26:36

punto gota es

play26:39

este yo puedo tener varios reduce el si

play26:42

para bar para cada reducir en mi caso

play26:44

bueno yo crearía una carpeta para

play26:45

separarlos de esa forma pero tú lo

play26:47

puedes estructurar de la manera que

play26:49

mejor te parezca muy bien entonces aquí

play26:52

dentro de ese archivo index punto está

play26:54

ese yo necesito crear un nuevo slice en

play26:58

redux toolkit son llamados slice esas

play27:01

partes que podemos tener del estado es

play27:05

decir una parte para los usuarios una

play27:06

parte para productos etcétera

play27:09

eso se llama slice o una capa que sería

play27:11

básicamente una parte del estado

play27:13

entonces necesito crear un slice para

play27:17

los usuarios entonces aquí lo que hoy yo

play27:19

le voy a decir es que tengo que importar

play27:21

desde la biblioteca de redux toolkit

play27:26

una función que se llama create a ver

play27:31

create slice este de aquí perfecto y con

play27:33

eso voy a crear un slice así que la

play27:35

tengo que usar avisar aquí create slice

play27:38

y esto de aquí también recibe un objeto

play27:40

y ese objeto va a tener una serie de

play27:43

opciones lo primero que va a tener o de

play27:46

propiedades lo primero que va a tener es

play27:47

un nombre es el nombre que yo le voy a

play27:49

dar a ese slice entonces yo lo voy a

play27:52

llamar por ejemplo en este caso users

play27:56

ahora así es como me voy a referir a él

play27:59

dentro del estado y también va a tener

play28:02

un estado inicial en el state y esto va

play28:06

a ser un objeto el estado inicial es

play28:08

como arranca mi aplicación en cada para

play28:13

cada parte del estado no entonces yo por

play28:16

ejemplo lo que voy a tener es una lista

play28:18

de usuarios aquí en los usuarios voy a

play28:20

tener una lista de usuarios y como

play28:22

arranca esta lista bueno si es un array

play28:24

arranca vacío luego lo voy a llenar con

play28:27

los usuarios que yo traiga desde la

play28:29

consulta de la japay perfecto y por

play28:32

último lo que voy a tener es un reduce a

play28:34

unos reduces porque podemos tener varias

play28:37

entonces aquí esto también va a ser un

play28:39

objeto por ahora no voy a crear ninguno

play28:42

luego ya podemos empezar a crear algunos

play28:44

reduce es aquí básicamente es esto de

play28:47

aquí esto entonces yo lo tengo que lo

play28:50

tengo que exportar de aquí

play28:53

a exportar y lo tengo exportar en una

play28:56

constante que le tengo que colocar un

play28:58

nombre no entonces le voy a colocar por

play28:59

ejemplo user slice se le suele colocar

play29:03

la palabra slice porque es algo bien

play29:06

slice porque es un slice que que estamos

play29:09

creando una parte del estado no muy bien

play29:13

ahora qué es lo que vamos a hacer bueno

play29:15

tenemos que también exportar inclusive

play29:19

lo voy a exportar como default aquí

play29:21

exportar como default vamos a exportar

play29:25

el reduce de este slice para poderlo

play29:29

agregar donde poderlo agregar aquí en

play29:31

nuestra en nuestra state o en nuestra

play29:34

estoy aquí porque como les dije el

play29:36

reducir de nuestra store que es único

play29:39

está formado por varios reducirse y esos

play29:42

reducir vienen de cada slice que creemos

play29:44

que cada slice es una parte de nuestro

play29:47

estado

play29:49

aquí yo creo un slice solo para la parte

play29:51

de usuarios entonces voy a exportar aquí

play29:53

de ese slice el reducir no entonces aquí

play29:58

yo lo llamé y usher y usher slice punto

play30:02

reduce entonces el reducir de este slice

play30:05

lo voy a exportar y eso lo tengo que

play30:08

importar aquí para poderlo agregar a los

play30:10

reduce desde aquí así que aquí le voy a

play30:13

decir que voy a tener los reduce y como

play30:15

sólo tengo uno pues voy a importarlo se

play30:18

llama y usher hoy users y lo voy a

play30:21

importar desde la carpeta de slides y

play30:26

users perfecto y simplemente agregó stay

play30:30

users aquí

play30:33

muy bien con eso entonces ya habremos

play30:35

agregado el slice day users a la store o

play30:39

al estado global y eso pues ya sabemos

play30:42

que está siendo pasado a todos los

play30:44

componentes que tenemos en la aplicación

play30:46

a través de éste provider muy bien que

play30:49

es lo que necesitamos hacer ahora bueno

play30:52

necesitamos hacer la llamada de red que

play30:55

trae los usuarios o la consulta que trae

play30:58

los usuarios y bueno sólo podemos hacer

play31:00

incluso aquí dentro del mismo archivo de

play31:02

redux reid ox entonces nos ayuda mucho a

play31:06

organizar eso también porque podemos

play31:09

hacer las llamadas de red aquí dentro

play31:11

que son realmente operaciones asíncronas

play31:14

que son tratadas por redux a través de

play31:16

un middleware el millwall que trae por

play31:18

defecto es un middleware llamada llamado

play31:21

redux bank tenemos varios redox down

play31:24

redux saga pero él redux down es el que

play31:28

trae por defecto ya configurado en la

play31:31

biblioteca de redux toolkit antes antes

play31:34

lo teníamos que configurar nosotros

play31:36

mismos en el redux antiguo pero aquí ya

play31:38

eso queda bordes

play31:40

si tú no te preocupas por crear todo ese

play31:42

código de wyler plate así que bueno

play31:45

entonces lo que vamos a hacer es crear

play31:46

aquí dentro esas funciones que van a

play31:50

ejecutar operaciones and síncrona como

play31:51

las consultas a la api entonces aquí yo

play31:54

voy a crear una función llamada por

play31:56

ejemplo fecha

play31:59

al users es decir la que va a traer a

play32:01

todos los usuarios y esto de aquí

play32:03

simplemente va a ser un road function

play32:05

esa road function aquí va a retornar

play32:09

otra función o debe retornar otra

play32:12

función

play32:13

entonces aquí esto lo que debe hacer es

play32:16

retornar

play32:18

otra función de esta manera perfecto

play32:21

pero bueno esto de aquí si el retorno a

play32:23

una función de esta manera y no tenemos

play32:25

más código que colocar aquí podemos

play32:27

evitar colocar el return y dejarlo de

play32:29

esta forma así bueno vamos a quitar esta

play32:32

llave que estas tareas sobrando y

play32:33

perfecto de esta forma puede quedar

play32:35

ahora que es lo que vamos a hacer aquí

play32:37

la llamada de red y bueno o la consulta

play32:40

no al papel y cómo lo hacemos bueno para

play32:43

eso tenemos que usar action que fue la

play32:45

biblioteca que yo instale aquí para eso

play32:47

action entonces lo vamos a importar aquí

play32:50

como action desde la biblioteca access

play32:55

perfecto y ese action entonces me va a

play32:58

permitir por ejemplo ejecutar un método

play33:00

http del tipo get para traer alguna cosa

play33:03

y donde lo vamos a traer bueno de la

play33:05

play que les había acabado de mostrar de

play33:07

esta de aquí vamos a copiar esta url que

play33:10

me trae los dos usuarios disponibles en

play33:12

esa pay y los vamos a colocar aquí

play33:14

dentro de estas comillas y bueno como

play33:18

esto de aquí que es una operación

play33:19

asíncrona entonces va a retornar una

play33:21

promesa y esa promesa la podemos tratar

play33:24

puede ser aquí mismo la podemos tratar

play33:27

con un then si todo sale bien entonces

play33:30

esto va a tener aquí una respuesta

play33:34

response y aquí vamos a ver qué hacemos

play33:37

con esa respuesta pero si no así ocurre

play33:40

un error también entonces podemos aquí

play33:42

recibir

play33:44

un error y ese error también lo

play33:47

podríamos tratar pero aquí bueno nos

play33:49

vamos a poner a tratar los errores

play33:51

simplemente vamos a decirle que lo

play33:53

queremos por ejemplo imprimir por

play33:55

consola caso ocurre alguna cosa voy a

play33:58

dar aquí un control chispa y a formatear

play34:00

el código complete yo que es una

play34:03

extensión que tengo instalada aquí en

play34:04

visual studio code para formatear el

play34:06

código muy bien entonces aquí si todo

play34:09

sale bien voy a tener una respuesta que

play34:11

trae un cuerpo llamado deira y ese deira

play34:14

me trae todos estos datos de aquí

play34:17

entonces dentro de ese deira va a estar

play34:19

este de irak que serían los que sería la

play34:22

raíz de los usuarios

play34:24

yo voy a ignorar estas otras

play34:25

informaciones sólo quiero el array de

play34:27

irak entonces qué sucede que nosotros

play34:30

aquí vamos a tener que la respuesta trae

play34:32

a neira que es el cuerpo de datos y ese

play34:37

deira dentro trae otra propiedad de ira

play34:40

que sería el array con los usuarios pero

play34:44

muy bien que lo que nosotros queremos

play34:46

hacer con este reino esa lista de

play34:48

usuarios bueno queremos colocar

play34:50

en el estado global aquí está el rey que

play34:54

está vacío aquí de la lista lo queremos

play34:56

alimentar con esos usuarios que vienen

play34:58

de la consulta y cómo hacemos para pasar

play35:00

esto desde aquí hasta aquí bueno para

play35:04

eso nosotros vamos a tener que usar unas

play35:05

acciones que están dentro de los

play35:07

reductos porque porque bueno esto de

play35:10

aquí incluso podrían no estar en este

play35:12

mismo archivo yo lo estoy colocando aquí

play35:14

porque queda mejor pero esto de aquí

play35:16

incluso podría estar fuera en otro

play35:18

archivo podría ser un request que está

play35:20

siendo hecho desde el propio perdón

play35:25

desde el propio componente y usher list

play35:28

tal vez usando un giuseppe que lo

play35:30

podríamos colocar todo aquí entonces

play35:33

para poder mandar esos datos desde allá

play35:35

hasta aquí necesitamos un medio de

play35:37

comunicación y ese medio de comunicación

play35:39

es una función llamada action que está

play35:42

dentro del objeto de los reduce entonces

play35:45

yo voy a crear una acción para eso le

play35:47

voy a llamar set y usher list porque él

play35:51

va a aceptar la lista de usuarios aquí

play35:54

en el estado

play35:55

en el estado de la aplicación entonces

play35:57

esto de aquí es una función

play36:01

yo creo que la función y esa función que

play36:03

recibe primeramente recibe el state es

play36:05

decir este estado de aquí lo recibimos

play36:09

aquí y además de eso también recibe una

play36:11

acción bien que es lo que va a suceder

play36:14

aquí que nosotros vamos a usar ese state

play36:16

punto miren que aquí me aparece list es

play36:19

decir esta lista de aquí a esa lista yo

play36:22

la quiero ser igual al nuevo valor el

play36:25

nuevo valor que es bueno la lista de

play36:27

usuarios que nosotros vamos a obtener

play36:28

desde la consulta y que la queremos

play36:30

pasar acá entonces dónde viene esa lista

play36:34

de usuarios viene en el action el action

play36:37

tiene una propiedad llamada pay load

play36:40

este de aquí y es el pay lo va a traer

play36:44

los datos la lista de los nuevos datos

play36:46

el listo de usuario que sería en este

play36:48

caso que será el nuevo dato que nosotros

play36:50

queremos colocar en el estado

play36:53

miren aquí entra en lección y el estado

play36:56

el estado va a recibir y el action es lo

play36:59

que está llegando como un dato nuevo

play37:01

ahora sí nosotros podemos usar este este

play37:05

acción de aquí para poder pasar la

play37:07

respuesta hacia acá pero bueno para eso

play37:10

nosotros tenemos que exportar esta

play37:13

acción de aquí para que ella quede

play37:15

visible a lo que está por fuera de los

play37:17

reduces entonces aquí yo le voy a decir

play37:20

que quiero exportar

play37:23

que conste vamos a desestructurar esto

play37:26

desde el user slice

play37:30

desde aquí desde las acciónes él va a

play37:32

tener unas secciones que son estas que

play37:34

están dentro del objeto de reducir y

play37:36

aquí entonces yo quiero exportar a la

play37:39

que se llama set y usar list esta de

play37:42

aquí ahora sí entonces como la estoy

play37:45

exportando y ya queda visible a esta

play37:47

función de aquí y la puedo usar justo

play37:50

aquí sets y usher list y bueno qué le

play37:55

voy a pasar aquí le voy a pasar entonces

play37:58

response

play38:01

la respuesta trae un cuerpo de datos y

play38:03

ese cuerpo de datos va a traer dentro un

play38:05

array que también se llama their

play38:09

perfecto pero esto de esta manera no nos

play38:11

va a funcionar solamente así porque

play38:14

porque tenemos que usar un despacho o un

play38:17

despacho en este caso que es quien se

play38:20

encarga de ejecutar a la acción' los

play38:22

dispatcher son los que ejecutan las

play38:24

acciones y donde entre ese despacho

play38:27

aquí entra como un parámetro en esta

play38:29

función lo vamos a llamar aquí dispatch

play38:31

él entra aquí y de esa manera entonces

play38:34

yo lo puedo usar justo aquí dispatch

play38:38

es una función y dentro entonces le paso

play38:41

la acción que quiero ejecutar de esta

play38:44

manera ahora si nosotros estaríamos

play38:46

ejecutando esta acción que simplemente

play38:49

recibe los datos que vinieron desde la

play38:53

consulta a la pei y se los pasa aquí

play38:57

a esta acción entran en el en la

play38:59

propiedad de pay lloyd y sp y love está

play39:02

siendo asignado al estado de lista es

play39:04

decir quedan guardados aquí si nosotros

play39:07

guardamos aquí y refrescamos aquí

play39:10

nuestra aplicación vamos a tener los

play39:12

usuarios que estaban desde el inicio

play39:14

ahora quienes subieron les sugiero que

play39:17

instalen otra extensión llamada redux de

play39:21

tools aquí en google chrome esta

play39:23

extensión llamada redux de tools esa

play39:26

extensión los que les va a permitir ver

play39:28

el estado de la aplicación aquí en

play39:30

inspeccionar si yo doy clic derecho

play39:32

inspeccionar me va a parecer una pestaña

play39:34

ahora aquí llamada redux miren que esta

play39:38

pestaña me deja ver varias cosas me deja

play39:39

ver la acción que se está ejecutando me

play39:41

deja ver el estado la diferencia entre

play39:44

el estado anterior y el nuevo en donde

play39:47

entre otras cosas entonces lo que más me

play39:49

interesa es el estado miren que en el

play39:50

estado ya me dice que está usuarios y

play39:54

users tengo un slice en el estado

play39:56

llamado you ser no tengo más nada sólo

play39:58

ese y dentro de ese estado pues slice

play40:01

tengo la lista de usuarios que está

play40:03

que está vacía pero ya se debería estar

play40:06

llenando porque realmente nosotros ya

play40:10

estamos haciendo la llamada a la peli e

play40:13

intentando llenarla pero porque no se

play40:15

está llenando buenos y nosotros volvemos

play40:17

aquí

play40:18

no se está llenando porque esta función

play40:21

que es la que hace la llamada no la

play40:22

estamos llamando en ningún lado debemos

play40:25

ejecutarla en algún lado donde la

play40:27

ejecutamos bueno en el componente que le

play40:30

interesa que se que se consulten a los

play40:33

usuarios y cual componente es ese el de

play40:35

la lista de usuarios este de aquí

play40:37

entonces qué sucede que yo no voy a

play40:38

necesitar más estos usuarios estáticos

play40:40

que estaban aquí voy a quitar

play40:43

y voy a dejar el array aquí vacío por

play40:46

ahora aquí entonces aquí dentro yo

play40:49

necesito ejecutar

play40:51

esta función de aquí fecha al users que

play40:53

me trae a todos los usuarios pero como

play40:55

eso es una operación que es asíncrona

play41:00

nosotros tenemos que tratar eso como

play41:02

efectos colaterales con un giuseppe que

play41:04

ya habíamos visto eso antes así que aquí

play41:07

yo voy a importar a news effect

play41:11

y lo voy a usar por aquí voy a usar de

play41:14

hecho voy a aprovechar aquí el

play41:17

[Música]

play41:18

aquí el sniper que me crea ya toda esta

play41:21

estructura por ahora no lo voy a dejar

play41:22

nada de aquí de dependencias y aquí voy

play41:25

a quitar todo esto y qué es lo que voy a

play41:27

hacer aquí bueno voy a ejecutar esa

play41:29

función pero la tengo que importar así

play41:32

que aquí voy a colocar todo lo que es de

play41:33

redux voy a importar una función desde

play41:38

el slice que está en la carpeta de store

play41:43

slice y users

play41:46

perfecto desde ahí qué es lo que quiero

play41:48

bueno quiero la función llamada fecha al

play41:51

users y esta fecha al users la voy a

play41:55

ejecutar aquí

play41:56

coloquemos la de esta manera yo guardo

play41:59

pero se van a dar cuenta de que a pesar

play42:02

de que se está ejecutando aquí no nos va

play42:05

a traer los datos bueno aquí ya no

play42:07

aparecen los usuarios porque los

play42:08

quitamos si yo voy aquí inspeccionar y

play42:11

voy a enel redux en el estado miren que

play42:13

aún mi lista sigue vacía no se ha

play42:16

llenado con los usuarios porque a pesar

play42:19

de que estoy ejecutando esto de aquí no

play42:23

se está llenando con los nuevos datos

play42:25

porque realmente esto de aquí necesita

play42:28

ser ejecutado por un despacho nuevamente

play42:32

necesitamos un despacho aquí y como lo

play42:35

obtenemos bueno usando la biblioteca

play42:39

que habíamos instalado llamada react

play42:41

redux esa biblioteca y entonces nos va a

play42:45

haber aquí redux nos va a proporcionar

play42:47

algunos looks

play42:50

el primer hooks es llamado just dispatch

play42:53

stage dispatch lo voy a colocar por aquí

play42:55

él va a retornar una función yo lo voy a

play42:58

llamar la voy a colocar quien está

play42:59

constante llamada this page aquí news

play43:03

dispatch mandó ejecutar aquí el hook que

play43:07

me retorna a la función que queda en

play43:09

esta constante que llame dispatch y ese

play43:11

despacho entonces es una función que voy

play43:15

a colocar aquí dispatch y ese despacho

play43:18

es el que ejecuta a ésta

play43:21

esta función de fets alias ers ahora sí

play43:25

sí yo guardo aquí los cambios bueno aquí

play43:28

me está marcando algo aquí el criterio y

play43:31

es porque bueno ya que me está exigiendo

play43:35

como dependencia al despacho a la

play43:38

función dispatch así que se la voy a

play43:40

colocar aquí para mantenerlo contento

play43:42

solamente guardo los cambios y miren que

play43:45

se ahora yo vengo aquí a mi aplicación

play43:47

que sucedió y ahora el state de la

play43:50

aplicación

play43:51

se llenó con los usuarios tenemos el

play43:54

estado de joseph la lista y aquí está la

play43:57

lista de los 12 usuarios que están que

play43:59

vienen de la pei y cada uno con sus

play44:01

datos estamos entonces

play44:04

usando linux en una aplicación de una

play44:07

manera bastante sencilla pero miren en

play44:10

este caso lo que estamos haciendo

play44:11

entonces es realizar una llamada a una

play44:14

para una consulta y colocando esos datos

play44:17

de esa consulta los estamos colocando en

play44:21

el estado global de la aplicación

play44:24

muy bien ahora qué es lo que sucede qué

play44:27

bueno que aquí en la aplicación no

play44:29

tenemos nada por qué porque no estamos

play44:30

consumiendo esos datos desde el estado

play44:34

global de la aplicación así que ahora

play44:36

vamos a cerrar de cierta forma el ciclo

play44:39

hasta ahora solo llevamos los datos

play44:41

hacia el estado global ahora los debemos

play44:44

consumir desde allá por cualquier

play44:47

componente que lo necesite en este caso

play44:49

como es una aplicación bien sencilla

play44:51

quién los va a necesitar es el mismo

play44:53

componente de user list pero bueno como

play44:55

hacemos eso para eso tenemos que usar

play44:58

otro book que viene aquí en esta

play45:01

biblioteca llamado ius el lector es

play45:04

ellos el lector no va a permitir

play45:06

entonces tomar parte del estado de la

play45:10

aplicación y bueno yo y de hecho usar

play45:12

aquí el snipe y el selector y el jean

play45:16

auto completa miren que él va a colocar

play45:18

aquí lo que yo quiero obtener desde el

play45:21

estado miren aquí ejecutó el fuck you

play45:24

selector y eso aquí tiene una función

play45:26

dentro un corvette que recibe el estado

play45:28

de la aplicación todo el estado entero

play45:31

pero de ese estado yo puedo tomar parte

play45:33

solamente una parte de lo que yo

play45:35

necesite yo necesito aquí es la parte de

play45:38

los usuarios es decir el slice de users

play45:41

que yo tengo aquí este de aquí y users

play45:45

perfecto y ese users inclusive él tiene

play45:50

algo específico que yo quiero aquí que

play45:52

es la lista es solamente aquí tiene la

play45:56

lista y yo pues voy a desestructurar

play45:57

esto que está siendo retornado aquí

play46:00

lista entonces qué sucede qué bueno

play46:03

ahora aquí yo de hecho puedo quitar este

play46:06

users de aquí no necesito pero aquí me

play46:09

tocaría colocar list ahora si no quiero

play46:11

colocar list y dejar de ser yo puedo

play46:13

renombrar este list que estoy trayendo

play46:15

de aquí lo puedo renombrar como users

play46:18

así de esta manera y ya queda de esa

play46:22

forma si guardo los cambios y venimos

play46:24

aquí miren lo que sucede ahora tenemos

play46:27

todos los usuarios pero ahora están

play46:30

llegando desde la app y qué pasa luego

play46:33

al estado global de la aplicación y del

play46:36

estado global de la aplicación

play46:38

aquí a la interfaz de usuario y de esa

play46:40

forma entonces estamos cerrando el ciclo

play46:42

bueno aquí de hecho le voy a colocar

play46:45

aquí un margin top de 4 para que separan

play46:48

un poco las columnas también necesito

play46:49

que se separen con un margin botón de

play46:53

cuatro por ejemplo ahora si tenemos un

play46:56

poco más de espacio aquí y de espacio

play46:57

entre ellos también miren que tenemos

play46:59

aquí la foto de cada usuario el nombre

play47:02

el apellido y el email es decir estamos

play47:05

entonces

play47:07

consultando una app y tomando sus esa

play47:10

lista de usuarios colocando esa lista en

play47:12

el estado global de la aplicación y

play47:13

dejándola ahí para que cualquier

play47:15

componente pueda usar esa lista de

play47:17

usuarios en este caso el componente que

play47:19

está usando la lista de usuarios es un

play47:21

componente que creamos llamado y usar

play47:24

list y ese mismo yo ser list es

play47:26

realmente quien aquí en este caso está

play47:28

haciendo el llamado a la apei o quién

play47:31

manda por lo menos a ejecutar esa

play47:33

operación entonces aquí de esta manera

play47:36

cerramos el ciclo de redux de una manera

play47:39

bastante sencilla tal vez aquí ustedes

play47:41

no le encuentren mucha gracia tal vez

play47:46

mucha utilidad porque una aplicación muy

play47:48

sencilla sólo podríamos hacer con un

play47:49

yusef

play47:50

aquí colocando todos los usuarios en el

play47:52

estado del propio componente pero pues

play47:56

es una manera de ilustrar cómo lo

play47:58

podemos usar de una forma muy muy

play48:00

sencilla ahora esto es muy útil cuando

play48:03

la aplicación es muy grande es una

play48:06

aplicación que escala porque ahí vamos a

play48:08

tener muchos componentes y varios de sus

play48:11

componentes con seguridad van a

play48:12

compartirla

play48:13

misma información entonces para que no

play48:15

se lo estés pasando a través de prop se

play48:17

la puedes dejar en un estado global o en

play48:20

un estor como la de redux para que ellos

play48:22

la consulten directamente desde allá ese

play48:26

es el propósito de redux espero que

play48:28

bueno haya sido un poco clara la

play48:30

explicación y bueno así cualquier duda

play48:33

surge pues no dude en escribir en los

play48:35

comentarios

play48:36

espero que les haya gustado el vídeo que

play48:38

les haya parecido útil nos vemos en un

play48:40

próximo

play48:41

chao

play48:41

[Música]

Rate This

5.0 / 5 (0 votes)

Related Tags
ReactReduxState ManagementTutorialGlobal StateRedux ToolkitJavaScriptWeb DevelopmentCode ExampleDevOps