Vuex 4 已正式发布,此版本的更新重点是提供更好的兼容性。从 release note 可以看到,Vuex 4 不但支持 Vue 3,并且提供与 Vuex 3 完全相同的 API,因此用户可以在 Vue 3 中重用其现有的 Vuex 代码。

虽然 Vuex 4 将兼容性放在了首位,但此版本依旧包括部分破坏性变化,下边简单介绍一下。

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension (opens new window),提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

安装过程已更改

为了与新的 Vue 3 初始化过程保持一致,Vuex 的安装过程已更改。举个例子,如果需要创建一个新的 store 实例,现在会鼓励用户使用新引入的createStore功能。

import { createStore } from 'vuex'

export const store = createStore({
  state() {
    return {
      count: 1
    }
  }
})

尽管从技术上来讲这并不是一个破坏性变化,开发者仍可以使用new Store(...)语法,但官方表示建议将该方法与 Vue 3 和 Vue Router 4 保持一致。

要将 Vuex 安装到一个 Vue 实例,需要传递实例而非 Vuex。

import { createApp } from 'vue'
import { store } from './store'
import App from './App.vue'

const app = createApp(App)

app.use(store)

app.mount('#app')

打包与 Vue 3 一致

新版本会生成以下的包,以与 Vue 3 打包保持一致:

  • vuex.global(.prod).js
  • vuex.esm-browser(.prod).js
  • vuex.esm-bundler.js
  • vuex.cjs.js

ComponentCustomProperties类型化

Vuex 4 删除其this.$store在 Vue Component 中的全局类型以解决 issue #994。与 TypeScript 一起使用时,必须声明自己的模块扩充 (module augmentation)。

将以下代码放在项目中以允许this.$store正确类型化:

// vuex-shim.d.ts

import { ComponentCustomProperties } from 'vue'
import { Store } from 'vuex'

declare module '@vue/runtime-core' {
  // Declare your own store states.
  interface State {
    count: number
  }

  interface ComponentCustomProperties {
    $store: Store<State>
  }
}

从核心模块导出createLogger 函数

在 Vuex 3 中,createLogger函数从vuex/dist/logger中导出,但现在它已包含在核心软件包中。因此应该直接从vuex包中导入。

import { createLogger } from 'vuex'

此外还包括两个 Bugfix:

  • 修复导出缺少storeKey的错误(4ab2947)
  • 修复 webpack 包中的 tree shaking 无法运行的错误 (#1906) (#1907) (aeddf7a)

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源