Angular 使用功能模块在会话存储和ngrx存储之间同步

Angular 使用功能模块在会话存储和ngrx存储之间同步,angular,ngrx,Angular,Ngrx,我正在使用ngrx存储本地存储npm包将我的ngrx存储与浏览器会话存储同步。 我已经使用功能存储将我的存储划分为块 在刷新浏览器之前,同步会完美进行;刷新浏览器时,将重新创建存储,并且仅生成当前要素存储并与会话存储同步,即使所有其他要素存储在会话存储中都可用。 是否有任何设置可用于将整个会话存储同步到存储?只需将存储:会话存储属性添加到LocalStorageConfig只需将存储:会话存储属性添加到LocalStorageConfigNGRX允许您创建中间件 开发人员可以将元简化程序看作是a

我正在使用
ngrx存储本地存储
npm包将我的ngrx存储与浏览器会话存储同步。 我已经使用功能存储将我的存储划分为块 在刷新浏览器之前,同步会完美进行;刷新浏览器时,将重新创建存储,并且仅生成当前要素存储并与会话存储同步,即使所有其他要素存储在会话存储中都可用。
是否有任何设置可用于将整个会话存储同步到存储?

只需将存储:会话存储属性添加到LocalStorageConfig

只需将存储:会话存储属性添加到LocalStorageConfig

NGRX允许您创建中间件

开发人员可以将元简化程序看作是action->reducer管道的挂钩。元约简允许开发人员在调用普通约简之前预处理操作

import merge from 'lodash.merge';
import { StoreModule, ActionReducer, MetaReducer } from '@ngrx/store';
import { reducers } from './reducers';
 
export function storageMetaReducer<S, A extends Action = Action>(reducer: ActionReducer<S, A>) {
      return function(state: S, action: A): S {
        const nextState = reducer(state, action);
        const savedState = JSON.parse(localStorage.getItem('__storage__')) || {};
        merge(nextState, savedState);
        localStorage.setItem('__storage__', nextState)
        return nextState;
      };
    }
    
export const metaReducers: MetaReducer<any>[] = [storageMetaReducer];

@NgModule({
  imports: [
    StoreModule.forRoot(reducers, { metaReducers })
  ],
})
从“lodash.merge”导入合并;
从'@ngrx/store'导入{StoreModule,ActionReducer,MetaReducer};
从“./reducers”导入{reducers};
导出函数storageMetaReducer(reducer:ActionReducer){
返回函数(状态:S,操作:A):S{
const nextState=减速机(状态、动作);
const savedState=JSON.parse(localStorage.getItem(''uuuu storage_uuu'))|{};
合并(nextState、savedState);
localStorage.setItem(“存储”下一个状态)
返回下一状态;
};
}
导出常量MetaReducer:MetaReducer[]=[storageMetaReducer];
@NGD模块({
进口:[
forRoot(还原程序,{metaReducers})
],
})
本地存储与会话存储之间的主要区别
本地存储在选项卡之间是持久的,会话存储在每个选项卡上。

NGRX允许您创建中间件

开发人员可以将元简化程序看作是action->reducer管道的挂钩。元约简允许开发人员在调用普通约简之前预处理操作

import merge from 'lodash.merge';
import { StoreModule, ActionReducer, MetaReducer } from '@ngrx/store';
import { reducers } from './reducers';
 
export function storageMetaReducer<S, A extends Action = Action>(reducer: ActionReducer<S, A>) {
      return function(state: S, action: A): S {
        const nextState = reducer(state, action);
        const savedState = JSON.parse(localStorage.getItem('__storage__')) || {};
        merge(nextState, savedState);
        localStorage.setItem('__storage__', nextState)
        return nextState;
      };
    }
    
export const metaReducers: MetaReducer<any>[] = [storageMetaReducer];

@NgModule({
  imports: [
    StoreModule.forRoot(reducers, { metaReducers })
  ],
})
从“lodash.merge”导入合并;
从'@ngrx/store'导入{StoreModule,ActionReducer,MetaReducer};
从“./reducers”导入{reducers};
导出函数storageMetaReducer(reducer:ActionReducer){
返回函数(状态:S,操作:A):S{
const nextState=减速机(状态、动作);
const savedState=JSON.parse(localStorage.getItem(''uuuu storage_uuu'))|{};
合并(nextState、savedState);
localStorage.setItem(“存储”下一个状态)
返回下一状态;
};
}
导出常量MetaReducer:MetaReducer[]=[storageMetaReducer];
@NGD模块({
进口:[
forRoot(还原程序,{metaReducers})
],
})
本地存储与会话存储之间的主要区别
本地存储在选项卡之间是持久的,会话存储在每个选项卡上。

更适合在上询问此问题更适合在上询问此问题