Bienvenido al curso

1

Conoce a tu profesor y todo lo que aprenderás sobre Redux

2

¿Qué conocimientos me recomiendan para tomar este curso?

Repaso React

3

¿Qué es React y cómo funciona?

4

Preparando nuestro entorno de trabajo

5

Creación de la app con React

6

Agregando funciones a la app con React

7

Stateful vs Stateless

8

Ciclo de vida de React

9

Manejando promesas

10

React Router DOM

Introducción a Redux

11

¿Qúe es Redux, cuándo usarlo y por qué?

Fases de Redux

12

Introducción: las fases de Redux

13

Store

14

Reducers

15

Conexión a un componente

16

Action Creators

17

Redux Thunk

18

Explicación teórica: ciclo completo de Redux

19

Práctica: ciclo completo de Redux

Fases Extra

20

Archivos Types

21

Try Catch

22

Escenarios asíncronos

23

Componente Spinner

24

Componente Fatal

25

Tabla como componente

Compartir información en Redux

26

Introducción Compartir información en Redux

27

Parámetros por URL

28

Compartir Reducer

29

Múltiples Reducers

30

Llamando a múltiples reducers en una acción

31

Uso del estado en la acción

32

Evitar segundas búsquedas

33

Inmutabilidad

34

Evitar sobrescritura

35

Validación compuesta

36

Validación de errores

37

Modificando respuesta de url

38

Estado con interacción

39

Mostrar componentes dinámicamente

40

Llamadas asincronas dinámicas

41

Props por herencia vs estado

42

Estado compartido

Métodos HTTP

43

Introducción a métodos HTTP

44

Nuevo ciclo Redux

45

Normalizar datos

46

Mapear Objetos

47

Componente para agregar tarea

48

Manejar inputs con Reducer

49

POST

50

Deshabilitando botón

51

Redireccionar

52

Reutilizar componentes

53

PUT

54

DELETE

55

Últimos detalles

Conclusión

56

Conocimientos adquiridos

57

Qué hacer a continuación

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Redux por Bedu

Curso de Redux por Bedu

Rodolfo Saldivar

Rodolfo Saldivar

Mapear Objetos

46/57
Recursos

Un objeto Map puede iterar sobre sus elementos en orden de inserción. Un bucle for..of devolverá un array de [clave, valor] en cada iteración.

Cabe destacar que un Map el cual es un mapa de un objeto, especialmente un diccionario de diccionarios, solo se va a mapear en el orden de inserción del objeto — el cual es aleatorio y no ordenado.

Aportes 17

Preguntas 0

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Recuerden que para que no cargue las tareas dos veces agregar el condicional al componentDidMount asi:

`  componentDidMount() {
    if (!Object.keys(this.props.tareas).length) {
      this.props.traerTodas();
    }
  }`
  1. Creamos una función que va a iterar las key del objeto tareas, son los ids de los usuarios y a cada llave que retorne un h2 y un div que llame a ponerTareas()

  2. ponerTareas() recibe el usu_id, el id del usuario, recordemos que iteramos por las tareas del usuario y por cada usuario retorno todas las tareas del usuario junto un checkbox.

Conclusión: al componente Tareas, iteramos el objeto tareas que, por cada usuario le ponemos todas las tareas.

No sabía que se podía usar métodos como map y atributos como length sobre objetos, ahora se que ya existe Object.Keys, Gracias

Solo me carga una tarea por usuario, ¿a quién más le pasa?

No me salen los titulos y copie y pegue el codigo y nada ._.

Buena clase, se esta entendiendo mas

Excelente clase. 🙂

Excelente

Recordar que el valor que debe ir en el key es el que pasamos por el map en la arrow function

Excelente clase, mil gracias 😄

Genial todo el contenido es oro

Cabe destacar que un Map el cual es un mapa de un objeto, especialmente un diccionario de diccionarios, solo se va a mapear en el orden de inserción del objeto — el cual es aleatorio y no ordenado.

Un objeto Map puede iterar sobre sus elementos en orden de inserción. Un bucle for…of devolverá un array de [clave, valor] en cada iteración.

No me imprimia los titulos pero aqui mi solucion:

mostrarContenido = () => {
        const { tareas, cargando, error } = this.props;
        if(cargando) {
            return <Spinner />
        }
        if(error) {
            return <Fatal mensaje={error} />
        }
        var i = 0, j = 0;
        var titleArray = [];
        var completedArray = [];
        return Object.values(tareas).map((tarea, index) => {
            if(i === 0) {
                titleArray = [];
                completedArray = [];
            }
            if(i < 20) {
                i++;
                j = tarea['userId']
                titleArray.push(tarea['title']);
                completedArray.push(tarea['completed']);
                if(i === 20) {
                    i = 0;
                    return (
                        <div key={ tarea['userId'] }>
                            <h2>Usuario { tarea['userId'] }</h2>
                            <div className='contenedor_tareas'>
                                { titleArray.map((title, index) => (
                                    <div key={'Tarea ' + j + index}>
                                        <input type='checkbox' defaultChecked={ completedArray[index] }/>
                                        {title}
                                        <br/>
                                    </div>
                                ))}
                            </div>
                        </div>
                    )
                }
            }
        })
    };

Excelente

Wow, super bien explicado

onerTareas = (usu_id) => {
        const { tareas } = this.props
        const por_usuario = {
            ...tareas[usu_id]
        }

        return Object.keys(por_usuario).map((tar_id) => (
            <div key={ tar_id }>
                <input type="checkbox" defaultChecked={  por_usuario[tar_id].completed} />
                {
                    por_usuario[tar_id].title
                }
            </div>            
        ))
    }