【发布时间】:2018-02-10 15:07:59
【问题描述】:
我在 SSR react 应用程序中遇到了 redux 存储问题。一切正常,在服务器上创建的 initialState 由客户端上的 window.initialState 接收。当我想在我的 App.js 中通过 store().getState 获取当前商店时出现问题
createStore.js
const configureStore = preloadedState => {
const store = createStore(
rootReducer,
preloadedState || global.__initialData__,
applyMiddleware(
promiseMiddleware(),
thunk,
// logger
)
);
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('./reducers', () => {
const nextRootReducer = require('./reducers/index');
store.replaceReducer(nextRootReducer);
});
}
return store;
}
export default configureStore;
server.js
const stores = createStore( reducers );
stores.dispatch(setLang( serve_lang )); // 'pl'
global.__initialData__ = stores.getState();
let initialDatas = stores.getState();
const store = configureStore( initialDatas );
...
<html>
<script>window.__initialData__ = ${serialize(initialDatas)}</script>
...
client.js
const store = configureStore(window.__initialData__);
hydrate(
<Provider store={store} key={Math.random()}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
document.getElementById('root')
);
if (module.hot) {
module.hot.accept();
}
在我的 App.js 中,我想通过
获得我当前的商店import store from 'configureStore'l
store().getState();
当我在 App.js 中执行 store.getState() 时,我总是有 initialState
【问题讨论】:
标签: javascript reactjs redux server-side-rendering