Redux 4.2 版本发布

6,248 阅读2分钟

近日,redux 发布 4.2.0 版本,该版本将原始 createStore API 标记为 @deprecated(废弃),并且添加了一个全新的 legacy_createStore API,但是并没有添加弃用警告。此外该版本鼓励用户迁移到 Redux Toolkit

目标

Redux Toolkit@reduxjs/toolkit包)是当今 Redux 用户编写 Redux 代码的正确方式:redux.js.org/introductio…

但不幸的是,许多教程仍然使用过时的 Redux 手写模式,这种模用户的开发体验非常差。鉴于此类问题,Redux 官方为常用的编辑器设计一个插件,当用户鼠标悬停在 createStore 函数上时,文档会提示建议使用 configureStore from RTK 进行代替,并将他们引导至文档页面。官方希望新学习者可以看到删除线、阅读工具提示、阅读文档页面,了解 RTK 并开始使用它。

为了兼容低版本代码,官方不会真正的删除createStoreAPI,只是将该 API 标记为已弃用(@deprecated)。

基本原理

  • RTK 极大改进了 Redux 的使用体验,其 API 简化了标准的使用模式及消除了意外情况造成的突变错误等
  • 官方建议将 RTK 合并至 redux 核心包中,或者完全弃用整个 redux 包,将其重新命名为 @reduxjs/core,但不幸的是,这些改动都会带来太多的复杂性。
    • 官方目前已经将包命名为 @reduxjs/toolkit,并且已经将文档和教程指向它。
    • 合并或者重新排列包结构需要维护人员数百小时的工作
  • 官方不想添加令人烦心的运行时警告

因此,官方采取最低限度的方法来接触使用过时模式的用户,同时避免破坏正在运行的代码。

结果

当用户在编辑器中导入 createStore 方法时,会看到一个删除线,同时文档工具将提示建议使用configureStore from RTK 进行代替。

image.png

如果用户不想看到删除线,他们有三个选择:

  • 按照文档建议,使用 RTKconfigureStore 方法
  • 什么都不做
  • 切换 legacy_createStore 模式导出的 API,此种模式下没有@deprecation标签

image.png

变化

标记 createStore 方法为已弃用,并添加 legacy_createStore 别名

如果你想了解更多讯息,请参考: github.com/reduxjs/red…