如何更改存储插件的默认@@ STATE键

时间:2018-12-18 19:34:21

标签: local-storage ngxs

我使用@ngxs/storage-plugin将应用程序状态同步到本地存储中。序列化状态的默认存储密钥为@@STATE,是否可以重命名默认密钥?

我注意到在调用NgxsStoragePluginModule.forRoot时,可以使用key选项来更改部分状态的存储密钥,但是当我尝试存储整个状态时它不起作用

1 个答案:

答案 0 :(得分:0)

应该将key选项命名为path。它不引用localStorage中使用的密钥的名称。尽管@@STATE还在同名的localStorage中创建了一个密钥。

key选项是状态存储中的一个或多个点符号。例如;

interface MyModel { example: string }

@State<MyModel>({
    name: 'app',
    defaults: { example: "Hello World" }
) //...

如果密钥设置为@@STATE,则存储将保存

   "@@STATE" : "{app: {example: 'Hello World'}}"

更改键时,它必须指向状态对象,否则将产生undefined。因此,我们可以将key设置为"example",将"Hello World"存储在名为“ example”的项下的localStorage中。

   "example": "Hello World"

到目前为止,值@@STATE已在插件中进行了硬编码,无法重命名。它具有序列化整个商店的特殊含义。否则,键必须是进入状态对象的点路径。