Reemplazar elemento de matriz por otro sin estado mutante

Así es como se ve el ejemplo de mi estado:

const INITIAL_STATE = {
 contents: [ {}, {}, {}, etc.. ],
 meta: {}
}

Necesito poder y de alguna manera reemplazar un elemento dentro de la matriz de contenido conociendo su índice, he intentado:

      return {
        ...state,
        contents: [
          ...state.contents[action.meta.index],
          {
            content_type: 7,
            content_body: {
              album_artwork_url: action.payload.data.album.images[1].url,
              preview_url: action.payload.data.preview_url,
              title: action.payload.data.name,
              subtitle: action.payload.data.artists[0].name,
              spotify_link: action.payload.data.external_urls.spotify
            }
          }
        ]
      }

dóndeaction.meta.index es el índice del elemento de matriz que quiero reemplazar con otro objeto de contenido, pero creo que esto solo reemplaza la matriz completa a este objeto que estoy pasando. También pensé en usar.splice() pero eso solo mutaría la matriz?

Respuestas a la pregunta(3)

Su respuesta a la pregunta