Я использую это руководство для рендеринга create-реагировать на приложение на сервере:
https://medium.com/@cereallarceny/server-side-rendering-in-create-react-app-with-all-the-goodies-without-ejecting-4c889d7db25e
Теперь мой index.js
выглядит так:
...
const Application = (
<Provider store={store}>
<ConnectedRouter history={history}>
<Frontload noServerRender={true}>
<App />
</Frontload>
</ConnectedRouter>
</Provider>
);
const root = document.querySelector('#root');
if (root.hasChildNodes() === true) {
// If it's an SSR, we use hydrate to get fast page loads by just
// attaching event listeners after the initial render
Loadable.preloadReady().then(() => {
hydrate(Application, root);
});
} else {
// If we're not running on the server, just render like normal
render(Application, root);
}
И мой App.js
:
...
const frontload = async (props) => {
await props.getSettings()
}
class App extends React.Component {
render() {
return (
<MuiThemeProvider theme={createMuiTheme(theme)}>
<JssProvider jss={jss} generateClassName={generateClassName}>
<div>
<CssBaseline />
<NavbarContainer />
<Routes />
<FooterContainer />
</div>
</JssProvider>
</MuiThemeProvider>
)
}
}
export default withRouter(connect(state => ({
settings: state.pages.settings
}), dispatch => ({
getSettings: () => dispatch(getPage('settings'))
}))(
frontloadConnect(frontload, {
onMount: true,
onUpdate: false
})(App)
))
Проблема странная. Когда я перемещаюсь по сайту через Link
s, все в порядке, но когда я нажимаю кнопку «Назад» в браузере, URL-адрес мигает, браузер переходит на предыдущую страницу, а кнопка «Вперед» становится серой! *
Я пытался удалить withRouter
из App
, но тогда Назад и Вперед не будет работать вообще!
Я пытался отключить и включить функции и протестировал, но он не работает.