# Migrando para versão 4.0 da versão 3.x Quase todas as APIs do Vuex 4 permaneceram inalteradas desde o Vuex 3. No entanto, ainda existem algumas mudanças importantes que você deve corrigir. - [Alterações Importantes](#alteracoes-importantes) - [Processo de instalação](#processo-de-instalacao) - [Suporte ao TypeScript](#suporte-ao-typescript) - [Os pacotes agora estão alinhados com Vue 3](#os-pacotes-agora-estao-alinhados-com-vue-3) - [A função "createLogger" é exportada do módulo principal](#a-funcao-createlogger-e-exportada-do-modulo-principal) - [Novas Características](#novas-caracteristicas) - [Nova função de composição "useStore"](#nova-funcao-de-composicao-usestore) ## Alterações Importantes ### Processo de instalação Para alinhar com o novo processo de inicialização do Vue 3, o processo de instalação do Vuex mudou. Para criar um novo _store_, os usuários agora são incentivados a usar a função createStore recém-introduzida. ```js import { createStore } from 'vuex' export const store = createStore({ state () { return { count: 1 } } }) ``` Para instalar Vuex em uma instância Vue, passe o `store` em vez do Vuex. ```js import { createApp } from 'vue' import { store } from './store' import App from './App.vue' const app = createApp(App) app.use(store) app.mount('#app') ``` :::tip NOTE Embora esta não seja tecnicamente uma alteração importante, você ainda pode usar a sintaxe `new Store(...)`, recomendamos esta abordagem para alinhar com Vue 3 e Vue Router Next. ::: ### Suporte ao TypeScript Vuex 4 remove suas tipagens globais para `this.$store` dentro de um componente Vue para resolver essa [issue #994](https://github.com/vuejs/vuex/issues/994). Quando usado com TypeScript, você deve declarar seu próprio _module_ _augmentation_. Coloque o seguinte código em seu projeto para permitir que `this.$store` seja tipado corretamente: ```ts // vuex-shim.d.ts import { ComponentCustomProperties } from 'vue' import { Store } from 'vuex' declare module '@vue/runtime-core' { // Declare seus próprios estados do store interface State { count: number } interface ComponentCustomProperties { $store: Store } } ``` Você pode aprender mais na seção [Suporte ao TypeScript](./typescript-support). ### Os pacotes agora estão alinhados com Vue 3 Os seguintes pacotes são gerados para se alinhar aos pacotes Vue 3: - `vuex.global(.prod).js` - Para uso direto com `