devtools 中间件将 Zustand 与 Redux DevTools Extension 集成,使您能够为 Store 实现强大的时间旅行调试功能,而无需 Redux 本身。此中间件会拦截状态更改,将其发送到 Redux DevTools,并启用时间旅行调试、操作检查和状态历史可视化等完整的 DevTools 功能。
有关 Zustand 中间件的常规信息,请参阅 中间件系统。
来源: src/middleware/devtools.ts177-201 src/middleware/devtools.ts250-366
devtools 中间件在您的 Zustand Store 和 Redux DevTools 之间创建了一个桥梁,使您能够
来源: src/middleware/devtools.ts112-147 src/middleware/devtools.ts177-201 src/middleware/devtools.ts250-366
要使用 devtools 中间件,您需要
来源: docs/middlewares/devtools.md66-95 src/middleware/devtools.ts177-201 src/middleware/devtools.ts250-366
devtools 中间件stateCreatorFn: 定义 Store 状态和操作的状态创建函数devtoolsOptions: Redux DevTools 集成的配置选项| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
名称 | 字符串 | 未定义 | DevTools 连接的自定义标识符 |
enabled | 布尔值 | 开发环境中为 true,生产环境中为 false | 启用/禁用 DevTools 集成 |
anonymousActionType | 字符串 | 'anonymous' | 未命名操作的操作类型 |
store | 字符串 | 未定义 | 在多 Store 设置中,特定 Store 的自定义标识符 |
来源: src/middleware/devtools.ts71-76 src/middleware/devtools.ts78-86
setStatedevtools 中间件通过添加一个可选的第三个参数来为操作命名,从而增强了标准的 setState 方法。
这使得可以为状态更改赋予有意义的名称,这些名称会显示在 Redux DevTools 中。
来源: src/middleware/devtools.ts52-69 src/middleware/devtools.ts178-202
每次状态更改都会在 Redux DevTools 中被跟踪为一个操作。操作可以
setState 的第三个参数命名anonymousActionType 配置的默认名称)来源: src/middleware/devtools.ts177-201
该中间件通过 Redux DevTools 支持完整的时间旅行调试
来源: src/middleware/devtools.ts305-366
当与 redux 中间件一起使用时,devtools 允许从 Redux DevTools UI 分派操作
来源: src/middleware/redux.ts34-49 tests/devtools.test.tsx561-623
devtools 中间件提供了两种调试多个 Store 的方法
默认情况下,每个 Store 都会获得自己的 Redux DevTools 连接
使用 Redux DevTools 中的 Store 选择器在 Store 之间切换。
使用 name 和 store 选项,您可以将多个 Store 分组到单个 DevTools 连接下
这会在单个 DevTools 实例中显示两个 Store,每个 Store 的状态都嵌套在其 Store 名称下。
来源: src/middleware/devtools.ts112-147 tests/devtools.test.tsx689-899
不要依赖匿名操作,请提供有意义的名称
来源: docs/middlewares/devtools.md162-267
在使用 slice 模式或多个模块时,为操作添加命名空间以区分它们
来源: docs/middlewares/devtools.md98-153
为避免生产环境的性能影响,请有条件地启用中间件
默认情况下,中间件会检查 import.meta.env?.MODE !== 'production',但明确设置 enabled 更可靠。
来源: src/middleware/devtools.ts163-165
问题: 使用多个 Store 时,Redux DevTools 中只显示一个。
解决方案: Redux DevTools 默认一次显示一个 Store。使用 Redux DevTools 界面的 Store 选择器下拉列表在 Store 之间切换。
来源: docs/middlewares/devtools.md157-160
问题: 操作在 Redux DevTools 中显示为“anonymous”。
解决方案: 将操作名称作为第三个参数传递给 setState
来源: docs/middlewares/devtools.md162-268
问题: 尽管应用了中间件,但未连接到 Redux DevTools。
解决方案:
enabled 选项是否被错误地设置为 falsename 选项使用显式的连接名称来源: src/middleware/devtools.ts159-168
devtools 中间件与其它 Zustand 中间件配合得特别好