Любящий razzle, такой большой инструмент.
У меня проблема, когда я настраиваю пользовательский интерфейс материалов, и все работает _фантастически_, за исключением одного: при посещении подстраницы и обновлении страницы я получаю страницу с минимальными стилями. На самом деле это увлекательная ошибка, потому что в зависимости от того, какая страница была открыта с последнего yarn start
она будет правильно отображать эту страницу только при обновлении, но если я перейду и обновлю ее, она не будет работать (даже на корневом пути).
yarn start
http://localhost:3000/blog-posts
напримерyarn start
Пробовал yarn build && yarn start:prod
и система работает, но только с минимальными стилями. Однако, если я найду ссылку и нажму на нее, все приложение снова станет красивым.
Я предполагаю, что это проблема с гидратом или, возможно, с комбинацией этого и @material-ui/core/styles/withStyles
. Кто-нибудь из вас сталкивался с этой проблемой?
Классы отличаются ( визуализируется html ) при последующей загрузке страницы, что означает, что это, вероятно, связано с начальной загрузкой изоморфных стилей/классов, которые, как я знаю, относятся к следующим обсуждениям:
Однако, как показывает моя ситуация выше, это, кажется, работает некоторое время, что заставляет меня думать, что оно ближе, чем кажется из этих обсуждений. Мысли?
Ха-ха-ха, у меня была такая же проблема с Material UI в Razzle 😢
@CharlyJazz Это очень (en|dis)обнадеживает. Ха-ха, вы пытались уйти от их реализации withStyles
и перейти к изоморфным классам?
Вы могли бы подумать, что после долгих утомительных часов исследований и отладки это было бы немного более приятно, но исправление в основном использует after.js, react-jss, генерирует ваш собственный Document
а затем строку внизу этой темы (о MuiThemeProvider, который связан только с MUI):
static async getInitialProps({ assets, data, renderPage }) {
const generateClassName = createGenerateClassName()
const jss = create(jssPreset())
const page = await renderPage(App => props => (
<JssProvider jss={jss} generateClassName={generateClassName}>
<MuiThemeProvider sheetsManager={new Map()}>
<App {...props} />
</MuiThemeProvider>
</JssProvider>
))
return { assets, data, ...page }
}
Пусть вы все избежите боли. :П
@jaredpalmer @jylinman Разве нельзя создать пример для документации по драке?
Всем, кто сталкивается с этой проблемой, я настоятельно рекомендую следовать официальным документам Material-UI SSR: https://material-ui.com/guides/server-rendering/
Самый полезный комментарий
Вы могли бы подумать, что после долгих утомительных часов исследований и отладки это было бы немного более приятно, но исправление в основном использует after.js, react-jss, генерирует ваш собственный
Document
а затем строку внизу этой темы (о MuiThemeProvider, который связан только с MUI):Пусть вы все избежите боли. :П