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.
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.
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.
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.
:::
Vuex 4 remove suas tipagens globais para this.$store
dentro de um componente Vue para resolver essa issue #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:
// vuex-shim.d.ts
import { ComponentCustomProperties } from 'vue'
import { Store } from 'vuex'
declare module 'vue' {
// Declare seus próprios estados do store
interface State {
count: number
}
interface ComponentCustomProperties {
$store: Store<State>
}
}
Você pode aprender mais na seção Suporte ao TypeScript.
Os seguintes pacotes são gerados para se alinhar aos pacotes Vue 3:
vuex.global(.prod).js
<script src="...">
no navegador. Expõe o Vuex global.<script src="...">
..prod.js
para produção.vuex.esm-browser(.prod).js
<script type="module">
.vuex.esm-bundler.js
webpack
, rollup
e parcel
.process.env.NODE_ENV
(deve ser substituído pelo empacotador).vuex.cjs.js
require()
.createLogger
é exportada do módulo principalNo Vuex 3, a função createLogger
foi exportada de vuex/dist/logger
, mas agora está incluída no pacote principal. A função deve ser importada diretamente do pacote vuex
.
import { createLogger } from 'vuex'
useStore
Vuex 4 apresenta uma nova API para interagir com o store na API de composição (ou Composition API). Você pode usar a função de composição useStore
para recuperar o store dentro do gatilho (ou hook) setup
do componente.
import { useStore } from 'vuex'
export default {
setup () {
const store = useStore()
}
}
Você pode aprender mais na seção API de Composição.