Close
升级到 Vue 3 | Vue 2 EOL

从 Vuex 0.6.x 迁移到 1.0

Vuex 2.0 已发布,但本指南仅涵盖迁移到 1.0?这是错字吗?此外,看起来 Vuex 1.0 和 2.0 是同时发布的。发生了什么事?我应该使用哪个版本,哪个版本与 Vue 2.0 兼容?

Vuex 1.0 和 2.0

但是,它们的目标用户略有不同。

Vuex 2.0 是 API 的彻底重新设计和简化,适用于那些正在开始新项目或希望走在客户端状态管理前沿的人。本迁移指南不涵盖它,因此如果您想了解更多信息,请查看 Vuex 2.0 文档

Vuex 1.0 基本上向后兼容,因此升级所需的更改很少。对于那些拥有大型现有代码库或希望获得最平滑的 Vue 2.0 升级路径的人来说,建议使用它。本指南致力于促进这一过程,但只包含迁移说明。有关完整的用法指南,请参阅 Vuex 1.0 文档

store.watch 使用字符串属性路径 替换

store.watch 现在只接受函数。因此,例如,您必须替换

store.watch('user.notifications', callback)

store.watch(
// When the returned result changes...
function (state) {
return state.user.notifications
},
// Run this callback
callback
)

这使您可以更完整地控制要侦听的响应式属性。

升级路径

在您的代码库上运行 迁移助手 以查找使用字符串作为第一个参数的 store.watch 的示例。

商店的事件发射器 已移除

商店实例不再公开事件发射器接口 (onoffemit)。如果您之前将商店用作全局事件总线,请参阅本节 以获取迁移说明。

而不是使用此接口来侦听商店本身发出的事件(例如 store.on('mutation', callback)),引入了一种新方法 store.subscribe。在插件中的典型用法是

var myPlugin = store => {
store.subscribe(function (mutation, state) {
// Do something...
})
}

有关更多信息,请参阅示例 插件文档

升级路径

在您的代码库上运行 迁移助手 以查找 store.onstore.offstore.emit 的示例。

中间件 已替换

中间件被插件替换。插件是一个接收商店作为唯一参数的函数,并且可以侦听商店上的变异事件

const myPlugins = store => {
store.subscribe('mutation', (mutation, state) => {
// Do something...
})
}

有关更多详细信息,请参阅 插件文档

升级路径

在您的代码库上运行 迁移助手 以查找商店上的 middlewares 选项的示例。