usePersistedState()
function usePersistedState<T>(
namespace,
name,
initialValue,
options?
): PersistedState<T>;
Defined in: rxdb-angular/src/use-persisted-state.ts:69
创建(或复用)一份持久化到 localStorage 的命名空间状态。
Type Parameters
| Type Parameter | Description |
|---|---|
T | 状态值类型 |
Parameters
| Parameter | Type | Description |
|---|---|---|
namespace | string | 状态命名空间 |
name | string | 键名;与 namespace 各自转义后组成持久化键 |
initialValue | T | 仅首次注册生效的初值;盘上已有值时以盘上值为准 |
options? | CreateSignalOptions<T> | 传给 Angular signal() 的选项,仅首次注册生效 |
Returns
Throws
同 namespace + name 此前以不同值类型注册过时抛出(RAN-010)
Example
const theme = usePersistedState('my-app', 'theme', 'dark');
theme.value.set('light'); // 落盘到 'my-app:theme'
Remarks
必须在 Angular 注入上下文中调用 —— 注册表是 root 服务。
这是 useState 的扁平签名适配,不是第二套持久化实现:注册表、键格式、
迁移与失败语义完全一致,usePersistedState(ns, name, init).value 与
useState(ns)(name).signal(init) 返回的是同一个 signal,两种写法可以混用。
存在的理由是三端签名对齐(RVU-010):React 的 hooks 规则不允许
「从返回对象的方法里再调 hook」,useState(ns)(name).signal(init) 的柯里化形态
在 React 侧无法复现,因此三端统一到这个扁平签名上。
三端等价实现:Vue usePersistedState(Ref)、React usePersistedState(快照 + setter)。
Vue / React 侧的内核是 @aiao/utils 的 PersistedStateRegistry,与本实现键格式一致
但各自独立持有内存状态 —— 同一页面里混用两端框架时,盘上数据互通,内存值不互通。