Uma coisa que me passou despercebido foi que ao importar o usaState voce coloca carrinho e setCarrinho dentro de um array e nao dentro de chaves como é de costume.. voce colocou os dois dentro de um array por o valor inicial era um array vazio certo?
Pois estava dando erro ao adicionar um item, e o valor inicial do carrinho no React Context estava diferente também..