Immer中间件
Immer在之前Redux Toolkit一章中已经有所介绍,而且也会在后面的章节中进行更加详细的介绍。在状态管理中使用Immer的主要目的就是利用不可变数据的特性,对应用状态变化检测过程进行优化。毕竟对于不可变数据来说,其中任何内容的变化,都会直接创建一个全新的对象。
Zustand也同样内置了整合Immer来实现其底层数据管理的中间件,而且Immer中间件可以直接使用,不必做任何配置。以下示例中展示了Immer中间件的使用。
import create from 'zustand';
import { immer } from 'zustand/middleware';
const useGearBox = create(
immer(set => ({
currentGear: 0,
shiftUp: () =>
set(state => {
state.currentGear += 1;
}),
shiftDown: () =>
set(state => {
state.currentGear -= 1;
})
}))
);
从示例中可以看出,在使用了Immer中间件以后,set
函数已经从需要返回发生了变化的值,变成了对状态字段的操作,充满了浓浓的Immer的操作特点。