1
我正在從Angular 2升級到Angular 4 + Universal。在以前的版本中,我在reducer中使用存儲狀態來設置初始狀態。 getInitialState
函數將設置狀態,然後檢查緩存是否有以前的值並更新狀態。狀態然後在導出的默認功能user
中返回。如何在Angular Universal應用程序中設置初始狀態?
function getInitialState() {
let initialState;
const emptyState = {
categories: null,
seeAllUsers: null,
groups: userGroupExists(),
formData: null,
bonusSeeAllUsers: null,
fetching: false,
searchResults: null
};
if (isBrowser) { // here is my problem
if (window['UNIVERSAL_CACHE'] !== undefined) {
const cache = JSON.parse(window['UNIVERSAL_CACHE'].CacheService);
if (cache) {
initialState = {
groups: cache.groups ? updateGroups(cache.groups) : null,
seeAllUsers: cache.seeAllUsers ? updateSeeAllUsers(cache.seeAllUsers) : null,
groups: userGroupExists(),
formData: null,
bonusSeeAllUsers: null,
fetching: false,
searchResults: null
};
} else {
initialState = emptyState;
}
} else {
initialState = emptyState;
}
} else {
initialState = emptyState;
}
return initialState;
}
export default function user(state: any = initialState, action: Action{
switch (action.type) {
case TYPES.RECEIVE_USERS_SEE_ALL_BEGIN:
let nextSeeAllBeginState;
if (action.payload.data === 0) {
return assign({}, state, {
seeAllUsers: {},
bonusSeeAllUsers: {},
fetching: true
});
}
}
}
由於最近更新角環球,其對PLATFORM_ID
注入構造函數來檢查代碼在瀏覽器或服務器這樣的運行要求:
constructor(@Inject(PLATFORM_ID)platformId: string){
isPlatformBrowser(platformId){
// access window
};
}
由於減速器不能使用任何角裝飾器,如何利用緩存中的值來更新我的狀態?
感謝您的支持。有必要使用'try'和'catch'來查看緩存是否可用。我會嘗試一下,讓它知道它是否有效。 –