1
resposta

Redux atualizando estado

Tenho o seguinte código no meu arquivo App.js

function timeline(state=[], action) {

    if(action.type === 'LISTAGEM') {

        console.log('entrou na listagem');
        return action.fotos;
    }

    return state;
}

const store = createStore(timeline);

E dentro do meu arquivo Timeline.js, o seguinte método:

constructor() 
    super();
    this.state = {fotosLista = []};
}

 carregaFotos() {

        let urlPerfil;

        if(this.login === undefined) {

            urlPerfil = `https://instalura-api.herokuapp.com//api/fotos?X-AUTH-TOKEN=${localStorage.getItem('auth-token')}`;
        } else {

            urlPerfil = `https://instalura-api.herokuapp.com//api/public/fotos/${this.login}`;
        }

        const listaFixa = [{"urlPerfil":"https://instagram.fcgh9-1.fna.fbcdn.net/vp/960227fa1524bee9e36610f8da71889c/5B6F42E1/t51.2885-19/11199408_569104449895751_1837574990_a.jpg","loginUsuario":"alots","horario":"23/04/2018 19:33","urlFoto":"https://instagram.fcgh10-1.fna.fbcdn.net/t51.2885-15/e35/14482111_1635089460122802_8984023070045896704_n.jpg?ig_cache_key=MTM1MzEzNjM4NzAxMjIwODUyMw%3D%3D.2","id":1,"likeada":false,"likers":[],"comentarios":[],"comentario":"comentario da foto"},{"urlPerfil":"https://instagram.fcgh9-1.fna.fbcdn.net/vp/960227fa1524bee9e36610f8da71889c/5B6F42E1/t51.2885-19/11199408_569104449895751_1837574990_a.jpg","loginUsuario":"alots","horario":"23/04/2018 19:33","urlFoto":"https://instagram.fcgh9-1.fna.fbcdn.net/t51.2885-15/e35/15276770_381074615568085_8052939980646907904_n.jpg?ig_cache_key=MTM5ODY4MDMyNjYyMDA1MDE4OQ%3D%3D.2","id":2,"likeada":false,"likers":[],"comentarios":[],"comentario":"comentario da foto"}];

        this.props.store.dispatch({type: 'LISTAGEM', fotos: listaFixa});   

        // this.props.store.lista(urlPerfil);
    }

Minha dúvida é a seguinte, ao executar o comando : this.props.store.dispatch({type: 'LISTAGEM', fotos: listaFixa});

e retornar pela store: return action.fotos;

Porque a variável this.state.fotosLista é atualizada? Sendo que o nome da chave que defini foi "fotos". Esta meio mágico pra mim por enquanto.

1 resposta

Fala Fábio, tudo bom? quando você retorna action.fotos, você não está retornando o nome "fotos" e sim o array de informações que é colocado no estado.

Isso é uma caracteristica de como o redux funciona, se quiser ver como tudo roda por debaixo dos panos, pode dar uma olhada nesse link:

https://codepen.io/omariosouto/pen/KXOVJE

Pensa que o dispatch é um publish e o subscribe é o subscribe do pubsub :)