持久化中间件

持久化中间件可以用于将状态保存到指定的任意类型的存储设备中,例如Local Storage或是Session Storage。

以下是将用户登录信息保存到Local Storage中的示例。

import create from 'zustand';
import { persist } from 'zustand/middleware';

const useUser = create(
  persist(
    (set, get) => ({
      id: null,
      token: null,
      expires: null
    }),
    {
      name: 'user-session',
      getStorage: () => localStorage
    }
  )
);

持久化中间件在使用的时候需要提供第二个参数,用来配置存储状态所用到的一些特性。常用的配置项有以下这些。

  • name,为当前定义的Store在持久化存储中制定一个唯一的名字用于标识。
  • getStorage,以一个函数的形式指定持久化存储所要使用的存储位置。默认保存在Local Storage中。
  • serialize,指定保存状态时所要使用的序列化方法,默认采用JSON.stringify
  • deserialize,指定读取已经保存的状态时所需要使用的反序列化方法,默认采用JSON.parse
  • version,标识当前所保存的Store的内容的版本号,主要用于记录Store中状态记录结构的变化情况。
  • migrate,用于在持久化存储中的版本号与应用中的版本号不一致的情况下进行状态迁移操作的函数。