我希望能夠在具有不同狀態樹的生產React/Redux應用程序中加載新捆綁包,並容納已登錄的用戶。我想要通過提示這些用戶註銷以便我可以重置狀態樹來完成此操作。在生產中的現有Redux商店中保留版本號
我的做法
通過傳承來自節點版本,我可以配置店裏插入version: {latest: VERSION, current: null}
鑰匙插入的狀態樹(或沒有)版本密鑰。當我從本地存儲裝載用戶現有狀態時(只會在用戶重新連接到節點服務器時發生),才能將其「劫持」到狀態樹中。
const {VERSION} = process.env;
const preloadedState = loadStateFromLocalStorage();
const browserVersion = (preloadedState.version && preloadedState.version.current) || null;
const store = createStore(
rootReducer,
Object.assign({}, preloadedState, {version: {latest: VERSION, current: browserVersion}}),
middleware
);
然後我可以檢查我的AppContainer
成分(因爲它的認證後貼裝頭組件)爲latest
版本兌current
版本。
class AppContainer extends React.Component {
componentDidMount() {
this.props.dispatch(checkForUpdates());
}
componentDidUpdate() {
this.props.dispatch(checkForUpdates());
}
render() {
return <App {...this.props} />
}
}
checkForUpdates()
會提示一個模式,指示用戶必須註銷才能繼續。註銷會將整個狀態設置爲{version: {latest: VERSION, current: VERSION}}
。
這種做法似乎過於複雜,在完成什麼,我試圖完成的,這基本上是(一)通知升級的用戶(二)登錄用戶輸出/淨化階段(C)加載新的,初始狀態從更新的JS捆綁。
這個工作,並說明邊緣情況?這是一個合理的方式來完成一個版本號的狀態樹嗎?
我仍然希望DOM樹能夠反映當前會話,並且需要利用狀態樹中的項目,例如模態功能。 – Himmel