Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[vuex] unknown mutation type: ADICIONA_PROJETO

Não ta reconedo a mutation

store/index.ts

...
import { createStore, Store, useStore as vxUseStore } from "vuex";
...
export const key: InjectionKey<Store<Estado>> = Symbol()

export const store = createStore<Estado>({
    state: {
        projetos:[]
    },
    mutations:{
        'ADICIONA_PROJETOS'(state, nomeDoProjeto: string){
            const projeto = {
                id: new Date().toISOString(),
                nome: nomeDoProjeto
            } as IProjeto
            state.projetos.push(projeto)
        }
    }
})

export function useStore(): Store<Estado> {
    return vxUseStore(key)
}

views/Projeto.vue

...
 <form @submit.prevent="salvar">
 ...
 <tr v-for="projeto in projetos" :key="projeto.id">
        <td>{{projeto.id}}</td>
        <td>{{projeto.nome}}</td>
</tr>
...
<script lang="ts">

import { computed, defineComponent } from 'vue';
import { useStore } from '@/store';

export default defineComponent({
...
 methods: {
        salvar() {
            this.store.commit('ADICIONA_PROJETO',this.nomeDoProjeto)
            console.log('passei aqui')
            this.nomeDoProjeto = ''
        }
    },
    setup () {
        const store = useStore();
        return {
            store,
            projetos: computed(() => store.state.projetos)
        }
    }
 
2 respostas
solução!

Opa Luciano! Tudo certo?

Pelo código que você compartilhou, parece que o problema está na definição da mutation no arquivo store/index.ts. A mutation está definida como 'ADICIONA_PROJETOS', mas no componente Projeto.vue você está chamando a mutation como 'ADICIONA_PROJETO' (sem o "S" no final).

Para corrigir esse problema, você precisa garantir que a mutation esteja sendo definida corretamente. No arquivo store, altere a chamada da mutation para 'ADICIONA_PROJETO'.

Dessa forma, a mutation será reconhecida corretamente e o novo projeto será adicionado ao estado.

Espero ter ajudado e bons estudos!

Muito obrigado, parece obvio pra quem vê pela primeira vez, mas passei várias vezes sobre o erro e não vi, rs!!!