Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

De fato a imutabilidade é recomendada quando se usa o Redux, mas acho que o Immutable JS não é necessário. É possível alcançar a imutabilidade de um jeito bem mais simples, usando apenas features do ES2015:

export function timeline(state = {}, action) {
    switch (action.type) {
        case LISTAGEM:
        case PESQUISA:
            return {...state, fotos: action.fotos};
        case COMENTARIO:
            return {
                ...state,
                fotos: state.fotos.map(foto => {
                    if (foto.id === action.fotoId) {
                        return  {
                            ...foto,
                            comentarios: foto.comentarios.concat(action.novoComentario)
                        };
                    } else return foto;
                })
            }
       [...]
    }
}

Criando um novo objeto e usando a função map, não é necessário usar nenhuma outra biblioteca para garantir a imutabilidade. Existe alguma vantagem no Immutable JS que a minha solução não alcançou?

1 resposta
solução!

Fala aí Giuliana, tudo bem? Eu não diria ser necessária, mas como você disse é recomendada (aconselhada).

Com a utilização da Immutable, temos uma maior segurança no projeto, pois ao utilizar seus objetos, só podemos alterá-los caso modificamos e devolvemos um novo.

É possível ter o mesmo resultado com JavaScript sem a biblioteca? Sim, com certeza. Mas a chance de erro e falha é MUITO maior.

Se um dev novo entrar no projeto e esquecer ou até mesmo dev's atuais, esquecer e fazer uma modificação direta é bem fácil.

Com a Immutable isso não seria possível, se você modificar uma lista, map ou record sem devolver um novo, o mesmo não será modificado.

Espero ter ajudado.