0

我们有一个基本的应用程序状态,需要在浏览器刷新时保持。类似于vuex-state-persistance插件。这是需要持久化的基本状态代码。

export const initialState = {
    user: {
        uuid: 'wedRfertYjsnjnakUiisdj878HBhsns',
        name: 'Kiran Maniya',
        scope: 'user'
    }
};

有什么可以直接用作插件的,或者我需要编写一个自定义插件来localStorage异步保持状态?另外,当我们需要管理复杂且庞大的状态时,我们如何将状态模块化?

4

1 回答 1

0

Aurelia Store 提供了一种内置机制来将状态持久保存在 localStorage 中。

因此,如果您的 initialState 在 main.ts 或 main.js 中初始化,如下所示:

aurelia.use.plugin('aurelia-store', { initialState: initialState });

然后在 app.ts 或 .js 中,您应该注册 localstorage 中间件并执行补液。

因此,在应用程序构造函数中,您可以编写:

import { localStorageMiddleware, rehydrateFromLocalStorage, Store } from 'aurelia-store';
import { initialState, State } from 'state';
...
constructor(
    private store: Store<State>,
  ) {
    store.registerMiddleware(localStorageMiddleware, MiddlewarePlacement.After, { key: ¨someKey¨ });
    store.registerAction('Rehydrate', rehydrateFromLocalStorage);
}

关于模块化,也许你应该结合 store 和 EventAggregator 来实现更复杂的场景。

祝你好运

于 2020-12-24T01:09:47.800 回答