Я разрабатываю приложение reactjs, отображаемое на стороне сервера. Все работает нормально, но у меня проблема, то есть требуется время для рендеринга css при первой загрузке (только загрузка контента с загрузкой html.after секунд css). Я также пробовал Изоморфный стиль-загрузчик.
Клиент.js
import './../../node_modules/bootstrap/dist/css/bootstrap.css';
import './styles/css/main.css';
const initialState = fromJS(window.__INITIAL_STATE__) ;
const Store = createStore(
reducers,
initialState,
applyMiddleware(thunk.withExtraArgument(axiosInstance))
);
hydrate(
<Provider store = {Store}>
<BrowserRouter>
<div>
{renderRoutes(Routes)}
<Footer/>
</div>
</BrowserRouter>
</Provider>,
document.querySelector('#root')
);
Сервер.js
import renderer from './helpers/renderer';
const app = express();
app.use(express.static('public'));
app.use(bodyParser.urlencoded({
extended: true
}));
app.get('*', (req, res) => {
const store = createStore(req);
const promises = matchRoutes(Routes, req.path)
.map(({ route, match }) => {
var parts = req.path.split("/");
var lastSegment = parts.pop() || parts.pop();
return route.loadData ? route.loadData(store, lastSegment) : null;
})
.map(promise => {
if (promise) {
return new Promise((resolve, reject) => {
promise.then(resolve).catch(resolve);
});
}
});
Promise.all(promises).then(() => {
const context = {};
const content = renderer(req, store, context);
if (context.url) {
return res.redirect(301, context.url);
}
if (context.notFound) {
res.status(404);
}
res.send(content);
});
});
app.listen(SERVER_PORT, () => {
console.info('Listening on port '+SERVER_PORT);
});
Рендерер.js
Я попытался загрузить весь файл css из rendere.js. но это не помогло, и часть тела html исчезла при перезагрузке страницы.
export default (req, store, context) => {
const content = renderToString(
<Provider store = {store} >
<StaticRouter location = {req.path} context = {context}>
<div>{renderRoutes(Routes)}</div>
</StaticRouter>
</Provider>
);
const helmet = Helmet.renderStatic();
return `<!doctype html>
<html lang = "en">
<head>
<link rel = "shortcut icon" href = "fav.png">
<meta name = "viewport" content = "width=device-width, initial-scale=1">
${helmet.title.toString()}
${helmet.meta.toString()}
</head>
<body>
<base href = "/" />
<div id = "root">${content.toString()}</div>
<script>
window.INITIAL_STATE = ${serialize(store.getState())}
</script>
<script src = "bundle.js"></script>
</body>
</html>
`;
};



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте добавить
hiddenкласс CSS в тело при выполнении SSR и удалить этот класс CSS в рендеререconstructor.