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?