restate / v1.0.0

API 参考

@kkwaenggwari/restate 1.0 的所有导出,及其参数、返回值和行为。

本页内容导出store 方法持久化 store 方法persistedRestate 选项状态字段restateManager 与 scope.manager存储适配器接口

导出

在 Web 和 React Native 上,一切都从 @kkwaenggwari/restate 导入。

导出返回用途
restate(initial, updater | options?)store Hook创建共享的内存 store。
persistedRestate(initial, options)持久化 store Hook创建通过存储恢复和保存的 store。
useRestateScope(factory?)工厂函数的结果或 scope在组件中拥有 store;卸载后销毁。
createRestateScope()RestateScope在 React 之外拥有 store;用完后调用 destroy()。
shallow(left, right)boolean对选取结果做一层比较。
batch(callback)回调的返回值多次变化后只通知订阅者一次。
restateManagerRestateManager等待启动数据,并对全局 store 执行批量操作。
createIndexedDBStorage(options?)RestateStorage用自定义的数据库名或仓库名创建 IndexedDB 适配器。
createMMKVStorage(options?)RestateStorage用你自己的实例或配置创建 MMKV 适配器。

store 方法

store 是一个可以当作 Hook 调用的函数,带有以下方法。

成员说明
useStore()返回整个值,每次变化都重新渲染。
useStore(selector, isEqual?)返回选取结果;当 isEqual(默认为 Object.is)报告有变化时重新渲染。
get()当前值,不订阅。
set(value | updater)替换值,或基于旧值计算新值。destroy() 之后会被忽略。
reset()恢复声明的初始值并返回它。
subscribe(listener)每次变化后调用 listener(value, previous, event);返回取消订阅的函数。
subscribeSelector(selector, listener, isEqual?)只在选取结果变化时调用 listener。
on(type, listener)监听 change、reset、save、error 等事件。
start() / stop() / isRunning()手动控制 updater。
destroy() / isDestroyed()释放监听器和 updater。之后的订阅会抛出 STORE_DESTROYED。
getInitial() / getServerSnapshot() / getError()初始值、服务端快照和最近一次监听器错误。
id / kind唯一 id;memory 或 persistent。

持久化 store 方法

persistedRestate 返回的 store 额外带有以下成员。

成员说明
ready自动加载结束时(即使失败)完成的 Promise。请检查 status()。
save()写入当前值;以实际写入的值 resolve。
restore()把已保存的值读入内存。
hasSaved()是否存在已保存的记录。
clearStorage()删除已保存的记录;内存不变。
resetAndClearStorage()把内存重置为初始值,并删除已保存的记录。
initialize()重新加载,例如在修复失败的记录之后。
status()冻结的状态快照;在某个字段变化之前一直是同一个对象。
useStatus(selector?, isEqual?)状态或选取的部分变化时重新渲染的 Hook。
key / storageKey / storage逻辑 key、带命名空间的 key,以及正在使用的适配器。

persistedRestate 选项

key 是必需的,其他选项都是可选的。

选项默认值含义
key必需记录的逻辑 key。
namespace"@kkwaenggwari/restate"存储 key 的前缀;设为空字符串即可禁用。
storageIndexedDB / MMKV用来替代平台默认值的适配器。
autoSavefalsetrue 在每次变化后保存;{ delayMs } 等待停顿。
version / migrate1 / 无记录的版本,以及如何升级旧记录。
validate无在保存前以及恢复或迁移后检查值。
serializerJSON自定义的 serialize 和 deserialize 函数。
operationTimeoutMs30000单个存储操作的时间上限。
maxPendingOperations256允许等待的操作数,包括正在执行的那个。
maxStorageCharacters5242880编码后值的最大长度,以 UTF-16 码元计。
updater / managed / serverSnapshot / onError—与 restate 的选项相同。

状态字段

status() 和 useStatus() 返回以下字段。

字段含义
ready自动加载已结束。
dirty内存与上次加载、保存或恢复的值不同。
operation正在执行的存储操作,或 null。
pending尚未结束的存储操作数,包括正在执行的那个。
blocked被中止或超时的适配器调用尚未结束。
available是否可以使用存储。
error / observerError最近一次存储错误;最近一次状态监听器错误。
lastSavedAt / lastRestoredAt最近一次成功的时间(epoch 毫秒),或 null。

restateManager 与 scope.manager

每个管理器跟踪注册到它的持久化 store。

成员说明
ready等待访问时已注册的 store;以 BULK_OPERATION_FAILED 拒绝。
saveAll(options?) / restoreAll(options?)对每个 store 执行 save 或 restore;{ concurrency } 限制并行数量。
clearStorageAll() / resetAll() / resetAllAndClearStorage()清空记录、重置内存,或两者都做。
list() / get(idOrKey) / size()查看已注册的 store。
subscribe(listener) / status()观察管理器事件和监听器错误。
destroyAll()销毁所有已注册的 store。

存储适配器接口

把带有以下方法的对象作为 storage 传入。每个方法都可以返回值或 Promise。

方法说明
getItem(key, context?)返回已保存的字符串或 null。
setItem(key, value, context?)保存字符串。
removeItem(key, context?)删除记录。
isAvailable?()同步返回存储是否可用。
clear?() / close?()可选的清空与清理。
coordinationKey?在包装同一底层存储的多个适配器之间共享的对象。

搜索文档

搜索所有指南的标题、描述和正文。